¥'É	Ð¥+JJJJ	À…?©\…>­þmÿ�þ®ÿ0½M…=Îÿ­þ…'Îþ¦+l> îþîþ ‰þ “þ /û¦+lý 	
  d§°© ¨�]¶‘@­ÅµLÒ¦­]¶ðî½µÐî¾µ© �]¶LF¥�¼µ ¨¦ ê¢L}¢ ±BÐÈÀÐ÷ ±B™¤µÈÀÐöL¼¦¢ÿŽ]¶Ðö                              Xü©Â íý© Úý©­ íý©  Úý`                      ¶	Žé·Ž÷·©�ø·�ê·­à·�á·©�ì·©�í·¬ç·ˆŒñ·©�ô·ŠJJJJª© �ø�x “·¢ÿšŽë·LÈ¿ ‰þL„�­ç·8íñ·�á·­ç·�ñ·Îñ·©�ì·©�í·©�ô· “·­ç·�þ¶i	�ñ·©
�á·8é�ÿ¶�í· “·`      ­å·¬ä· µ·¬í·ˆ êêÎì·Œí·Îñ·Îá·Ðß`x  ½°(`(8`­¼µ�ñ·© �ð·­ùµIÿ�ë·`© ¨‘BÈÐû` 
è· ¶`þ û· ·  þ`   ïØ ¢  ˆ±>J> ¼J> ¼™ »èàV�í¢ ˜Ðè¢U½ ¼)?� ¼Êõ`8†'Žx½�À½ŽÀ0|­ ¼…&©ÿ��ÀŒÀHhê Hh ¹¸ˆÐø©Õ ¸¸©ª ¸¸©­ ¸¸˜ VÐ¹ ¼Yÿ»ª½)º¦'��À½ŒÀˆÐë¥&êY »ª½)º®x��À½ŒÀ¹ »ÈÐêª½)º¦' »¸©Þ ¸¸©ª ¸¸©ë ¸¸©ÿ ¸¸½ŽÀ½ŒÀ`Hh��ÀŒÀ`  ¢VÊ0û¹ »^ ¼*^ ¼*‘>ÈÄ&Ðë`  ˆða½ŒÀûIÕÐôê½ŒÀûÉªÐò V½ŒÀûÉ­Ðç© ˆ„&¼ŒÀûY º¤&™ ¼Ðî„&¼ŒÀûY º¤&™ »ÈÐî¼ŒÀûÙ ºÐ½ŒÀûÉÞÐ
ê½ŒÀûÉªð\8` ü„&ÈÐæ&ðó½ŒÀûÉÕÐðê½ŒÀûÉªÐò ½ŒÀûÉ–Ðç© …'½ŒÀû*…&½ŒÀû%&™, E'ˆç¨Ð·½ŒÀûÉÞÐ®ê½ŒÀûÉªÐ¤`†+…*ÍxðS© …&­x…'8å*ð3°Iÿîx�iþÎxÅ&�¥&É°¨8 î¹¹º  º¥' ñ¹¹º  ºæ&ÐÃ  º­x)*+ª½€À¦+`ª  ¢ÊÐýæFÐæG8éÐð`0($ p,&"–—š›�žŸ¦§«¬­®¯²³´µ¶·¹º»¼½¾¿ËÍÎÏÓÖ×ÙÚÛÜÝÞßåæçéêëìíîïòóôõö÷ùúûüýþÿ³³ à³ÃÅ³ à³ÃÅ³ à³³Åª ‚³³Åª ‚Å³³ªˆ‚Å³³ªˆ‚ÅÄ³°ˆ ˜™œ ¡¢£¤¥¨©ª	
°±¸ÀÁÂÃÄÅÆÇÈÉÊÌÐÑÒÔÕ !Ø"#$%&'(àáâãä)*+è,-./012ðñ345678ø9:;<=>?

  1	'" 

  *   "( 
(9"1 (	, . (0# 2	 /#0/#0*?'#07#00/0/'#07#0:"4<*55/**5/*%5/)1/)1/)1/)'#0/#0*5/*75/**5/*:5//#0/#0'#07#0:::*::'#07#0"):$(%"%:$(%"%$$2%4%$$2%4%$(2()!)¡E(!‚€8bÅ$!œˆ H(+ © ˆ"@ H	!D)" EäŠÄ`€ 	@
$
°C  »  `
À�
ƒÊDQ
 &J€8½�À½ŽÀ0^©ÿ��ÀÝŒÀHh Ã¼ Ã¼��ÀÝŒÀêˆÐð©Õ Õ¼©ª Õ¼©– Õ¼¥A Ä¼¥D Ä¼¥? Ä¼¥AEDE?HJ>��À½ŒÀh	ª Ô¼©Þ Õ¼©ª Õ¼©ë Õ¼½ŽÀ½ŒÀ`HJ>��ÀÝŒÀhêêê	ªêêHh��ÀÝŒÀ`ˆ¥è‘ ”ˆ–è‘ ”ˆ–‘‘È”Ð–‘‘È”Ð–‘£È ¥…¤„H…I Œø Œø ±Hª ÑHðŠH±HªhH‘H½ŽÀ ½ŒÀÝŒÀÐöˆÐøhª½ŽÀ½ŒÀ ½ŒÀHhHhŽøÝŒÀÐˆÐî½‰À ±H™6 ÈÀ
Ðö ±<…G ±H ÑHð‘H(  j�½ŠÀ°½‹Àf5(Ð   ºˆÐú®ø ±H Z¾(Ð¤G ˆÐýæFÐ÷æGÐó ±HðZÉðXj°  ¸ 0Œx®ø D¹�$Îxó­xH©` •¾Îøð(©�ø©  Z¾h Z¾L¼½¤.Ìxð­xH˜ •¾hÎøÐåðÊh©@(LH¾ð9L¯¾ ±HH¥/ ‘HhðÅ/ð© Ðá ±H¨¹¸¿Å-Ð—(� Ü¸°Ž(¢ †& Â¸®ø$8 ‘H½ˆÀ` *¸�ð©°îH ±<jh�
 k¾Nx`…* Ž¾¹x$50¹ø�x¥*$50™ø™xL ¹ŠJJJJ¨`H ±Hjf5 Ž¾h
$50™ø™x` ±H…A©ª…> V© …D™ÿ»ˆÐú™ »ˆÐú©P •¾©(…E¥D Z¾ ¿©°$©0�x8Îxð D¹°õ¥-Ðñ Ü¸°ìæD¥DÉ#�Ó� ‘H8½ˆÀ`© …? €Ð¤E V¼°k *¸°fæ?¥?É�ì „?©0�x™¨¿ˆú¤E ‡¿ ‡¿ ‡¿HhêˆÐñ D¹°#¥-ð©ÅE¥Eé…EÉ°8` D¹° Ü¸�ÎxÐñ D¹°¥-ÉÐ Ü¸�ŒÎxÐë8`¤-¹¨¿0Ý©ÿ™¨¿Æ?Ê¥DÐ
¥EÉ�åÆEÆE`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 	
 “þ­�À­�À© � àLD·   �cª�pª�qª` [§Œ·ª` ~®®›³š £ºŽ›³©	L…³                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Óœ�ž½žuª“ª`ª �»µêžŸ"Ÿ.ŸQŸ`ŸpŸN¥¤–£Ð¤ï¤b¢p¢t¢é¢¥Å¥¥Ü¥¢¢—¢€¢m¥2¢<¢(¢-¢P¢y¥�¥0£\£�£|¢6èå¤ãã ààòÔ6èå¤ãã ààü¤ü¤eØ à<ÔòÔ¥¥g„�<ò­é·JJJJ�jª­ê·�hª­ àI Ð�¶ª¢
½a��U�ÊÐ÷L¼�©@�¶ª¢½k��U�ÊÐ÷8°­¶ªÐ© Ð
©L ²¥ Q¨© �^ª�Rª(j�Qª0l^�l\�
�¶ª¢½w��U�ÊÐ÷¢½“ª�uªÊ÷­±ª�Wª Ô§­³ªð	H �¦h  ‘@ [§­_ªÐ ¢/½Qž�ÐÊ÷­Sž�óI¥�ô­Rž�ò©Ð­bªð�_ªL€¡`L¿�L„�LýªLµ·­�¬�`­Âª¬Áª`LQ¨êêLYúLeÿLXÿLeÿLeÿeÿ Ñž­QªðH­\ª‘(h0L&¦ ê�¤$©`‘(­³ªð ‚¦©�Rª ºŸ ºž�\ªŽZªL³Ÿl8  Ñž­Rª
ª½�H½�H­\ª`�\ªŽZªŒ[ªºèèŽYª¢½Sª•6Êø`®·ªðLxŸ®QªðÉ¿ðuÅ3ð'¢ŽRªÍ²ªÐÊŽRªÊŽ]ª®]ª� èŽ]ªÉ�ÐuLÍŸÉ�Ð}¢ ŽRªL¤Ÿ¢ ŽRªÉ�ð­³ªðgÐ^H8­³ªÐ ^¦h�ì®ZªLŸÉ�Ð©�Rª ¦L™ŸÍ²ªð…ÉŠðñ¢ŽRªÐá© �Rªð%© �·ª Q¨LÜ¤­ Í²ªð
©�� ¢ ŽZª©@Ð©Ð© -^ªð ºŸ ÅŸ�\ªŒ[ªŽZª Q¨®Yªš­\ª¬[ª®Zª8`l6 ©�LÅŸ ÿŒ_ªÈŒbªî_ª¢ ½ Í²ªÐèŽ]ª ¤¡)Y„¨È
ðh�ð(ð ¹„¨ÐÖ­ Í²ªðL¤Ÿ­É�Ð [§L•ŸLÄ¦_ª¬_ª ^¦�©9	©ð©LÒ¦ÀÐ„3© 9	©ða •  ¤¡ð
�0L  jLY  “¡ð™uªÈÀ<�ó “¡Ðû(Ð¬_ª©9	©ð ÐË­“ªÉ ð­uªÉ ÐK¬_ª©À9	©ð?L   <© ™tªˆÐú`�uª©9	©ð' ¹¡°¨Ðà°¬_ª©9	©ðà°Î�ŠÐ©LÒ¦LÄ¦© �eª�tª�fª�lª�mª Ü¿­]ª ¤¡ÐÉ�Ð÷®_ª­eª
©]
©Ð“®cªðv�cªŽ]ªÐÜ¢
Ý@©ðÊÐøð¶½J©0Geª�eªÊŽdª ¹¡°¢­dª

¨¥EÐ	¥DÙU©�Œ¥EÙX©�Ðƒ¥DÙW©�Ðõ­cªÐ”˜J¨¥E™gª¥D™fªLè H©€eª�eªh)tª�tªÐéðœ €¡LƒŸ [§ ®¡­_ªª½�H½�H`®]ª½ É�ðèŽ]ªÉ¬` “¡ðúÉ ð÷`©  ™ºµˆÐú`© …D…E ¤¡É¤ð<(LÎ¡ ¤¡Ð¦D¥E`8é°0!É
° þ¡eDª© eE¨ þ¡ þ¡ŠeD…D˜eE…E�Ï8`D&E`( ¤¡ðÅ8é°0îÉ
�é0æÉ°â¢ þ¡ÊÐúD…DL¢¥DL•þ¥DL‹þ­^ªtª�^ª`,tªP ÈŸ©pMtª-^ª�^ª`© �³ª¥DH £h�WªLÔ§© ª¢ d§  ˜‘@`©Ð© ª¢Lê¢©Ðö­��½µ­	��¾µ©	�cª È¢Lê¢ £¢ Œ¦ÐûLq¶© LÕ£©�cª­lªÐ
­mªÐ©�lª­lª�½µ­mª�¾µ ê¢¥EÐLÈ¦…A¥D…@ C§ N§ §­cª�»µL¨¦­uªÉ ð% d§°: ü¢Lê¢ ¯§Ð© �³ª  ˜‘@ N§©�»µL¨¦ ’§Ð š§ð ¯§ðö ª§ðñ ü¢L£`©	-eªÉ	ðL  © Õ£­sª¬rª à£­mª¬lª à£­sª¬rªLÿ£ ¨¢©-ÂµÉðLÐ¦© Õ£ z¤ª­eª)ÐŽrªŒsª z¤®rª¬sªLq¤ ]£ Q¨lrª­¶ªð ¥ÖLÌ¦© Õ£8¥¯åg¨¥°åh à£¥h¤gLÿ£© Õ£8¥LåÊ¨¥MåË à£¥Ë¤ÊLÿ£�ÂµH ¨¢hLÄ§ŒÁµŒÃµ�Âµ©�»µ©�¼µ ¨¦­Âµ�ÃµL¨¦ŒÃµ�Äµ©L†¶ ¨¦Lê¢LÐ¦ £ ¨¢©#-Âµðð�Âµ­¶ªð(© ±¤ z¤egª˜ehÅt°p…°…j†¯†i¦g¤h q¤ Q¨l`�© ±¤ z¤8¥Lí`ªª¥Míaª�E¨ÄK�@ð>„Ë†ÊŽÃµŒÄµL
¤­
��Ãµ­��Äµ© �Âµ©�Áµ©�»µ©�¼µ ¨¦­aª�Âµ¨­`ª�Áµ` ê¢LÌ¦ÍÂµð®_ªŽbªJðLž¥¢½uª�“ªÊ÷Lz¥`­¶ªð�·ª ¤ ÈŸ Q¨lX�¥J…Ì¥K…ÍlV� ¤ ÈŸ Q¨lV� eÖ…3…ØLÒ× e…3…ØLÔ &¥©�RªLƒŸ &¥©�QªLƒŸ d§� £¢L4¥ N§­eª)ð¢½nª�½µÊ÷©
�»µ ¨¦`©@-eªð­fªÐ©þ�fª­��¼µ© ª¢L—£© ª¢­¿µ�fª`©L ²¥ð.© �¶ª  — ¢	½·ª�tªÊÐ÷©À�QªLÑ¤©  ²¥ð©LÒ¦© �·ªL„�Í àð�€ÀÍ àð��ÀÍ à` £¢­Oª�´ª­Pª�µª­uª�³ªÐ d§� £¢Lë¥ N§­eª)ð­nªÐ®oªðÎoªÎnª Œ¦ð8É�Ð÷ðå` ^¦°f­\ª�Ãµ©�»µ©�¼µL¨¦ ^¦°N©�Rª Œ¦Ð ü¢©ÍRªðÎ©LÒ¦Éà�)�\ª®Zªð	Ê½ 	€� L³ŸH­¶ªð¦vèð¦3àÝðh`¥Ù0ùh8` ü¢ [§L³Ÿ �¦ N§©Ð¡©�»µ©�¼µ ¨¦­Ãµ`­µª…A­´ª…@` «�­ÅµÉðL^¶L’¶êêêê¢ ŽÃµ`©Ð
©Ð©Ð©�\ª æ¿­¶ªð¥Ø0¢  §®\ª § ÈŸ Q¨ ^¦®\ª©°lZ�l^�½?ªªŽcª½q©H	€ ÅŸ®cªèhí`­fª�¿µ­hª�Àµ­jª�Áµ­��Ãµ­��Äµ¥@�Oª¥A�Pª` ¹uª‘@ˆø` ±@™©µÈÀ&Ðö`  ŒQªŒRª`© …E ’§Ls§ š§ð ª§Ð
¥@…D¥A…EÐì ±@ÙuªÐãˆö`8`­ �®�Ð
 %±@ð	ªˆ±@†A…@Š`  ±@`­³ªð­´ªÅ@Ð­µªÅAðÊ`MÂµð
)ð ê¢LÐ¦`8­ �…@­�…A­Wª�cª  ˜‘@ 8¥@é-‘@H¥Aé È‘@ªÊhHÈ‘@ŠÈ‘@ªÊhHÈ‘@ÈŠ‘@Îcªðªh8é&È‘@HŠé È‘@…Ah…@Lå§H© È‘@È‘@­¶ªðh…t…ph…s…o`h…M…Ëh…L…Ê`¥9Í�ð�Vª¥8�Uª­�…8­�…9¥7Í�ð�Tª¥6�Sª­�…6­�…7`INIÔLOAÄSAVÅRUÎCHAIÎDELETÅLOCËUNLOCËCLOSÅREAÄEXEÃWRITÅPOSITIOÎOPEÎAPPENÄRENAMÅCATALOÇMOÎNOMOÎPR£IN£MAXFILEÓFÐINÔBSAVÅBLOAÄBRUÎVERIFÙ !p p¡p p p p p p` " t""#x"p0p@p@€@€   @p@ !y q q pÖÄÓÌÒÂÁÃÉÏ@ À �  þ      ÿ  ÿ  ÿ  ÿÿ�LANGUAGE NOT AVAILABLÅRANGE ERROÒWRITE PROTECTEÄEND OF DATÁFILE NOT FOUNÄVOLUME MISMATCÈI/O ERROÒDISK FULÌFILE LOCKEÄSYNTAX ERROÒNO BUFFERS AVAILABLÅFILE TYPE MISMATCÈPROGRAM TOO LARGÅNOT DIRECT COMMANÄ� $3>L[dmx„˜ª»-˜  ðýýû(�     þ         ÌÉÓÁ Ö²®µ ÆÌÉÐÓÉÄÅ                                          „     ÁÐÐÌÅÓÏÆÔè·»³»´ À~³!«¬W¬o¬*­—­î¬õ¬9¬­�®­~³~³‰¬•¬†¬’¬~³~³½¬É¬º¬Æ¬~³à ð¢Ž_ªºŽ›³ j®­»µÉ°
ª½ÊªH½ÉªH`Lc³ («L³ Ü«©�ãµ®¾µ­½µÐà Ðè�èµŽéµ É±�^Žœ³®_ª½	©®œ³J°­QªÉÀÐL_³Ls³© �è´©�ç´Žœ³ D²®œ³�Ç´�Òµ�Ôµ­ñµ�Æ´�Ñµ�Óµ­Âµ�È´ 7° ¯ Ö· :¯®œ³©�Åµ½Æ´�Ñµ½Ç´�Òµ½È´�Âµ�öµ½ç´�îµ½è´�ïµŽÙµ©ÿ�àµ�áµ­â³�ÚµL^¯© ª�Ñµèà-Ðø­¿µIÿ�ùµ­Àµ�øµ­Áµ



ªŽ÷µ©�úµ` ¯ 4¯ Ã²©-Õµð! ÷¯©  °8ÎØµÐ÷®Ùµ­îµ�ç´­ïµ�è´ 7°L³ («­öµ0+­½µ…B­¾µ…C®œ³ ² 7°L³­¼µÉ°
ª½æªH½åªH`Lg³L{³­öµ0ø­¼µÉ°î
ª½òªH½ñªH`  ³ ¨¬�ÃµL³  ³ µ± ¨¬H ¢±  h‘BL–¬ ¶°°±BH [± ”±h`Lo³  ³­Ãµ Ú¬L³  ³ ¢±  ±B Ú¬ µ±LÊ¬H ¶°h‘B©@Õµ�Õµ [±L”±©€�ž³Ð© �ž³ («®œ³½È´)ž³�È´ 7°L³  ³L³ (« ¶°°ïîäµÐöîåµL­ («®œ³½È´L{³®œ³½Æ´�Ñµ�æ´©ÿ�Æ´¼Ç´ŒÒµ 7° ^¯°* ¯ Œœ³±B0ð	HÈ±B¨h ‰­¬œ³ÈÈÐç­Óµ¬Ôµ ‰­8°Ñ û¯L³8 Ý²© ¢�ðµÊú` Ü«©ÿ�ùµ ÷¯©��³ /® /®¢½¯³ íýÊ÷†E­ö·…D B® /® /® °°]¢ Žœ³½Æ´ðS0J  ½È´ ª˜ íý½È´) 

°ˆÐú¹§³ íý©  íý½ç´…D½è´…E B®©  íýèèè ½Æ´ íýèˆö /® 0²�§°žL³©� íýÎ�³Ð ý©��³` © H¥DÙ¤³�ù¤³…D¥Eé …Ehi HLG®h	° íýˆÛ` ¯  ŒÅµ±B™ÑµÈÀ-Ðö` ¯  ¹Ñµ‘BÈÀ-Ðö` Ü«© X°­ùµIÿ�Á³©�ë³©�ì³¢8© �»³èÐú¢àŒð ¹ ³�ó³èˆöàDÐì¢HÐè û¯¢ Š�»´èÐú E°©¬ð³ˆˆ�ì·�¼´Œ½´ÈŒí·© X°¬½´ˆ0Ðì˜ðæ Â· J·L³¢ ð¢Ð¢½Çµ…B½Èµ…C`,Õµp` ä¯© R°©¿-Õµ�Õµ`­Õµ0` K¯© R°©-Õµ�Õµ`­Éµ�ð·­Êµ�ñ·®Óµ¬Ôµ` 4¯ K¯ ¯(°	®Ñµ¬ÒµLµ¯ ±BðªÈ±B¨Lµ¯­»µÉð8` D² ‘BHˆ­ñµ‘BH :¯ Ö· ­Þµ‘BÈ­ßµ‘Bhªh¨©Ð©ŽÓµŒÔµ R° ±B�ÜµmÚµ�ÞµÈ±B�ÝµmÛµ�ßµ` ä¯©LR°¬Ëµ­ÌµŒð·�ñ·®Öµ¬×µ`©Ð©¬ÃªŒð·¬ÄªŒñ·®úµ  LR° E°(°¬½³®¼³Ð
®¼´Ð8`¬½´Ž—³Œ˜³© R°` E°®—³¬˜³©LR°­Åª�ð·­Æª�ñ·`Žì·Œí·�ô·ÉÐÕµ�Õµ­ùµIÿ�ë·­÷µ�é·­øµ�ê·­âµ�ò·­ãµ�ó·©�è·¬Áª­Âª µ·­ö·�¿µ©ÿ�ë·°`­õ· É ð Éð ˜L…³­äµÍàµÐ­åµÍáµðf ¯­åµÍÝµ�Ð­äµÍÜµ�­åµÍßµ�Ð­äµÍÞµ� ^¯�×`8­äµíÜµ
i¨ ¯±BÐ­»µÉð8` 4±L ±�ÖµÈ±B�×µ Ü¯­äµ�àµ­åµ�áµ ¯¬æµ`Œ�³ D²¬�³È‘B�×µˆ­ñµ‘B�Öµ ¯ Ö·©ÀÕµ�Õµ`®êµŽ½µ®ëµŽ¾µ®ìµ¬íµŽ¿µŒÀµèÐÈÌéµÐìèµÐ¢   îêµÐîëµŽìµŒíµ`îæµÐîäµÐîåµ`¬Ãµ®Äµ„B†CîÃµÐîÄµ`¬ÁµÐ®ÂµðÎÂµÎÁµ`L³ ÷¯­Ãµ…B­Äµ…C©��³© �ØµîØµ °°Q¢ Žœ³½Æ´ð0"  èèè±BÝÆ´Ð
ÈÀÐó®œ³` 0²�Û°Ï¬�³ÐÁ¬�³Ðï  èèè±B�Æ´ÈÀÐõ®œ³8`­œ³i#ªàõ`© ¬�³Ð—Lw³­ñµð!Îðµ0¢>ñµÊÐú�ðîîµÐîïµ­ðµ`© �ñµ© �ž³ ÷¯­ë³mì³ð	Íï³�©ÿÐ
­ž³Ð7©�ž³�ì³i�ë³�ñµ¨

¨¢¹ö³�ñµð8© ™ö³ˆÊÐî�½ û¯­ð³�ðµÐ‰Lw³­ñµÐ`H ÷¯¬ðµh Ý²© �ñµLû¯¢ü~ö´èÐúÈÌð³Ðò

¨ð¢½ñµö³™ö³ˆÊÐó`­½µ�æµ�êµ­¾µ�äµ�ëµ© �åµ ª­æµJ°Š�­åµmèµ�åµŠméµjnåµnäµnæµˆÐÛ­¿µ�ìµmæµ�æµ­Àµ�íµmäµ�äµ© måµ�åµ`©Ð"©Ð©Ð©Ð©Ð©ÐLí¿ê©
Ð­Åµ�8�Åµ© …H ~®(®›³š`  õ#    ÿÿ
dÔÉÁÂÓÒÁÂ ÅÍÕÌÏÖ ËÓÉÄ  þ                                z          #             ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ      ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ  ÿÿ                                                                                                                                                                                                                                                                                                                              � þ uª   ˜ — –                                         `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ÊMON;;
DBUG1   : Ä#"Q"†DBUG2– ;DBUG2   Ä#$8D†ERRORÊMON;ERROR   ËBELLÊMON;TRCMODE ËPRINTä 8D!ß "ADDRESS OF ROUTINE TO TRACE:"ä 00ËGETLNZ+8»NO PROMPT CHARÏ#0	ËBLKDEL"ËGETNUM»CONVERT NUMBER TO BINARYÍ$3E»;;
MON     : Í#0
ÐRUNMODEËCROUTÍ#")"	ÐPROMPT	ËGETLNZËZMODEÏ#0	ËBLKDELÄ#"$"	†DEBUG1Ÿ 
ËFAKEMONÊMON;DEBUG1  Ä#"T"»TRACE MODE†DBUG0
ËTRCMODEÊMON;;
DBUG0   : Ä#"P"»SET PARAMETERS MODE†DBUG1ËPARMSDELX ¥ ;;
DEBUG   : ËHOMEËPRINTä 8D8Dß "LAZER SYSTEM'S"ä 8Dß "INTERACTIVE"ä 8Dß "DEBUGGER"ä 8D8D*ß "(C) 1980, LAZER SYSTEM'S  VERSION 1.0"ä 8D8D8D00Í#$0ÐACCÐXREGÐYREG	ÐSTATUSÎ#7DBUGLP  ÐBRKPT,Xœ 	…DBUGLPLOOPÍ(ADRL),Y‡PRNTDONEË$FDEDÉADRL†PRNTLOOPÉADRH†PRNTLOOP;PRNTDONEÉADRL	†PRNDN0ÉADRH;PRNDN0  ÍADRL	Ð$105,XÍADRH	Ð$106,X;¢ ¬ ¢ ­ ¢ ¤ ¥ ;;;BLKDEL  ÍIN,YÄ#" "
†BLKDELXŸ 	†BLKDEL;BLKYSAV;FAKEMON ËGETNUMÒYSAVÏ#$17;FAKEMON2� 	‚RESETZÄCHRTBL,Y†FAKEMON2Æ#$15†FAKEMON3ÍMODEÏ#0ÇYSAVËBL1;
RESETZ  : ¥ ;;;PRINT   £ ¡ ± ¡ ¯ ¡ ;® 	Í$105,XÐADRL	Í$106,XÐADRHÏ#1;PRNTUT;;PRYX2   ËCROUT	ËPRNTYXÏ#0Í#"-"†COUT;;PRBYTE  ¡ Ô Ô Ô Ô 	ËPRHEXZ¢ ;PRHEX   Á#$FPRHEXZ  Â#$B0Ä#$BA�COUTÀ#6;COUT    ¡ ÍDISPMODE•COUT0¢ Ê$FDED;COUT0   ¢ ¥ ;;FAKEMON3ËTOSUBÏOKUP3 : ¢ ­ ¢ ¬ ¢ ¤ ¥ ;; ; ADDRESS NOT FOUND, GO TO NEXT	; LABEL.;NOTIT   ™ 	ÍSYMTBL
ÀSYMSIZE	ÐSYMTBL	ƒNOTIT0ÉSYMTBL+1;NOTIT0  ÊLOOKUP0;NOTFND  Í#0ÐFOUND¢ ­ ¢ ¬ ¢ ¤ ¥ ;;CROUT   Í#$8D†CODR†NOTIT;; TEST FOR "#";Ï#0Í(SYMTBL),YÄ#'#'‡NOTIT;; LABEL WAS FOUND;;
ÍINVERSE
ÐINVFLAGLOOKUP1 Í(SYMTBL),YÂ#$80ËCOUTŸ ÆCHARSIZE
�LOOKUP1Í#1ÐFOUNDÍ#$FF
ÐINVFLAG;;; AVOID STACK PROBLEMS;
LO¡ ¯ ¡ ± ¡ ;ÍDISPMODE	•NOTFND
ÍFMTSAVE	‡NOTFNDÄ#$21	‡NOTFND;	ÑLOADDR	ÒHIADDRÏ#$0	ÒSYMTBL	ÍSYMADRÐSYMTBL+1;LOOKUP0 Ï#0Í(SYMTBL),Y	‡NOTFNDÏCHARSIZEÍ(SYMTBL),Y	ÄLOADDR†NOTITŸ Í(SYMTBL),Y	ÄHIAD	ÊPCINC2;NBRNCH  ËSAVE© ƒ*+5	ÊPCINC3;INITBL      	ÊNBRNCH	ÊBRANCH;;;RESTORE ÍSTATUS¡ ÍACCRESTR1  ÎXREGÏYREG¤ ¥ ;;SAVE    ÐACCÑXREGÒYREG£ ¢ 	ÐSTATUS® ÑSPNTš ¥ ;;
LOOKUP  : £ 5  ÖSTATS	ƒRGDSP4
ÍRTBL1,XËCOUT� ;RGDSP4  œ 	…RGDSP5RGDSP6  Í#" "ËCOUT� 	…RGDSP6Í#$FF
ÐINVFLAG¥ ;RTBL    ß "AXYPS"RTBL1   ß "CZID"
å $80,$80ß "VN";;BRANCH  ™ Ï#1
Í(PCL),Y	ËPCADJ3ÐPCL± © ƒ*+5Í#" "ËCOUTÍ#"""ËCOUTÍACCÄ#$80�RDSP3Ä#" "€RDSP3Í#"""ËCOUTÍ#" "ËCOUTÊRDSP4;RDSP3   ËCOUTÍ#"""ËCOUT;
RDSP4   : ;ž ‚RDSP1;Í#" "ËCOUT
ÍINVERSE
ÐINVFLAGÎ#7	ÍSTATUSÐSTATSÏ#9RGDSPXJMP;RTNJMP  ÍRTNH¡ ÍRTNL¡ 
REGDSP  : ËCROUT
RGDSP1  : ¡ ± ¡ Í#" "ËCOUT¢ ­ ¢ Í#ACCÐA3LÍ/ACCÐA3HÎ#$FB;RDSP1   Í#" "ËCOUTÍRTBL-$FB,XËCOUTÍ#"="ËCOUT
ÍACC+5,X	ËPRBYTEÅ#$FB†RDSP4;ÊMON;XRTI    ™ ¢ 	ÐSTATUSXRTS    ¢ ÐPCL¢ ;PCINC2  ÐPCHPCINC3  ÍLENGTH	ËPCADJ3ÒPCH™ 	ƒNEWPCL;XJSR    ™ 	ËPCADJ2¬ ± ¡ ¯ ¡ Ï#2XJMP    ™ XJMPAT  Í(PCL),Y¬ � 
Í(PCL),YÑPCH;NEWPCL  ÐPCL„ESTOREÊXQT;
XBRK    : ÍDISPMODE”XBRK0;Í#1ÐDISPMODEËCROUTËCROUTÍ#$81
ÐFMTSAVEÏPCHÎPCL	ËPRNTYXÍ#"-"ËCOUTÍ#" "ËCOUTÎPCLÏPCH	ËLOOKUPËCROUT
ËINSTDSPÊMON;
XBRK0   : 	ËINSDS1ËCROUT	ËRGDSP1   : 
Í(PCL,X)‡XBRKÁ#$FÄ#$F£ 
Í(PCL,X)¤ †*+5ËUSRPATCH;	ÏLENGTHÄ#$20‡XJSRÄ#$60‡XRTSÄ#$4C‡XJMPÄ#$6C	‡XJMPATÄ#$40‡XRTIÁ#$1FÓ#$14Ä#$04‡XQ2;XQ1     Í(PCL),YXQ2     ÐXQT,Y� …XQ1
ËRGETNXT;OPRND3  Ä#"!"	†OPRND4ž 	ËGETDEC	ÊGETNXT;OPRND4  ËTSTDEC	†OPRND5	ËGETDEC	ÊGETNXT;OPRND5  Ä#"*"	†OPRND6ž 	ÊGETNXT;OPRND6  Ä#"%"	†OPRND7ž 	ËGETDEC	ÊGETNXT;
OPRND7  : Ä#">"	‡OPRND8Ä#"<"	†OPRND9LP ÍINPUT,XÄ#"#"†OPRND0.1ž 
ÍINPUT,X	ÊOPRND0;;OPRND0.1Ä#"("	†OPRND0ž 
ÍINPUT,X;;OPRND0  Ä#"""	†OPRND1ž ž ž 	ÊGETNXT;OPRND1  Ä#"'"	†OPRND2ž ž ž 	ÊGETNXT;OPRND2  Ä#"$"	†OPRND3ž 	ËGETHEX	Ê¢ ¬ ¢ ¥ ;;;;;;
GETOPRND: ;
ÅSYMLEN5€GETO1ÊOPRNDXIT;;
GETO1   : 
ÎSYMLEN5
ÍINPUT,XÄ#"""†GETO2ÊOPRNDXIT;;
GETO2   : Ä#"'"†GETO3ÊOPRNDXIT;;
GETO3   : 	ËTSTDEC
†OPRNDLPÊOPRNDXIT;;OPRNDXÄ(OPPNTR),Y	†NOTFNDž Ÿ Æ#3�MNEMLOOP	ÎOPCNTRÉOPCOUNT,X†OPXITÉOPCNTHI,XÊOPXIT;NOTFND  ÎSYMLENž Ï#0	ÉOPCNTR™ 	ÍOPPNTRÀ#3	ÐOPPNTR
ƒNOTFND0ÉOPPNTR+1;NOTFND0 Í(OPPNTR),Y†MNEMLOOP;OPXIT   ¢ ­ AMETER) TO CONTINUE"ä 00;¢ ¬ ¢ ¢ ¢ ¢ 	ÊTRCMD3;;;;;;â SCRNMEM è $400;Ú $10+*&$FFF0;USRPATCH¥ ;á ÿÿÿ                                                                                                               0TSTB0   ÍPCL
ÄBRKPT,X†TSTB1ÍPCHÄBRKPT+1,X‡TSTB2;TSTB1   ž ž Å#8�TSTB0;
TSTBXIT : ¢ ¬ ¥ ;TSTB2   ËPRINTä 8D8Dß "BRKPT ENCOUNTERED AT $"ä 00ÍPCHË$FDDAÍPCLË$FDDAËPRINTä 8D)ß "HIT SPACE (OR PARD8Dß "BRKPT #4:"ä 00
ÍINVERSE
ÐINVFLAG
ÍBRKPT+7Ë$FDDA
ÍBRKPT+6Ë$FDDAÍ#$FF
ÐINVFLAG;ËPRINTä 8D8Dß "(ZERO QUITS)"ä 8D8D8D00;¥ ;;
TSTBRKPT: ;ÍDOBRK”TSTB3¥ ;;
TSTB3   : 	Í#FALSEÐDOBRK¯ ¡ ;Î#ËPRINTä 8D8Dß "BRKPT #2:"ä 00
ÍINVERSE
ÐINVFLAG
ÍBRKPT+3Ë$FDDA
ÍBRKPT+2Ë$FDDAÍ#$FF
ÐINVFLAG;ËPRINTä 8D8Dß "BRKPT #3:"ä 00
ÍINVERSE
ÐINVFLAG
ÍBRKPT+5Ë$FDDA
ÍBRKPT+4Ë$FDDAÍ#$FF
ÐINVFLAG;ËPRINTä 8	Ð$600,XÍSCRNMEM+$300,X	Ð$700,Xž 	†RSTSC0¢ ¬ ¢ ¥ ;;;%; DSPBRKPT- DISPLAYS THE BREAKPOINTS;
DSPBRKPT: ;;ËPRINTä 8D8Dß "BRKPT #1:"ä 00
ÍINVERSE
ÐINVFLAG
ÍBRKPT+1Ë$FDDAÍBRKPTË$FDDAÍ#$FF
ÐINVFLAG;RNMEM+$100,X	Í$600,XÐSCRNMEM+$200,X	Í$700,XÐSCRNMEM+$300,Xž 
†SVSCRN0¢ ¬ ¢ ¥ ;;"; RSTSCRN- RESTORES SCREEN MEMORY;
RSTSCRN : ;¡ ¯ ¡ ;Î#0RSTSC0  ÍSCRNMEM,X	Ð$400,XÍSCRNMEM+$100,X	Ð$500,XÍSCRNMEM+$200,XÎBRKPTNUMÍ$3E
ÐBRKPT,XÍ$3FÐBRKPT+1,X;;
SBXIT   : Í#23ÐCV
ËRSTSCRN¥ ;;;;;'; SAVESCRN- SAVES A COPY OF THE APPLES; SCREEN MEMORY.;
SAVESCRN: ;¡ ¯ ¡ ;Î#0
SVSCRN0 : 	Í$400,XÐSCRNMEM,X	Í$500,XÐSC 00ËKEYINË$FDEDÄ#"0"
�PARMS10‡SBXITÄ#"5"
€PARMS10ËPRINTä 8Dß "ENTER ADDRESS OF BRKPT #"ä 00Ë$FDEDÁ#$F»CONVERT TO A #© ð#1ÐBRKPTNUMÍ#":"Ë$FDEDËGETLNZ+8»GETLN W/O PROMPTÏ#0	ËBLKDEL	ËGETNUM×BRKPTNUMARMXITÍ#23ÐCV
ËRSTSCRN¥ ;;
PARMS0  : Ä#"C"†SETBRKPT;;PARMXIT Í#23ÐCV
ËRSTSCRN¥ ;;;%; AT THIS POINT, SET THE BREAKPOINTS;;
SETBRKPT: ËDSPBRKPTPARMS10 ËPRINTä 8D(ß "WHICH BRK PT DO YOU WISH TO CHANGE?"ä
ËFAKEMON
ÊPARMXIT;;
PARMS1  : Ä#"A"€*+5ÊPARMS;Ä#"D"	‡STPJMP	�PARMS3ÊPARMS;;STPJMP  Î#$FF° 
ËPARMXITÊMON;;;
PARMS3  : Ä#"A"	†PARMS0;; TOGGLE DISPLAY MODE;ÍDISPMODEÓ#$1Á#$1ÐDISPMODE
ËPAVESCRNËHOMEËPRINTä 8D8Dß "  A) TOGGLE DISPLAY MODE"ä 8Dß "  B) SET BREAK POINT"ä 8Dß "  C) RETURN"ä 8Dß "  D) QUIT"ä 8Dß "  $) APPLE MONITOR COMMAND"ä 8Dß ":"ä 00ËGETLNZ+8»NO PROMPTÏ#0	ËBLKDELÄ#"$"	†PARMS1Ÿ MOVE TO PCL,PCHÐPCLÍ$3FÐPCHÍ#TRUEÐDISPMODE;TRCMD0  ËSTEP	ÍKEYBRD	…TRCMD0
ÐKEYSTRBÄ#" "	†TRCMD2TRCMD3  ÍKEYBRD	…TRCMD3
ÐKEYSTRBÄ#" "	†TRCMD2	‡TRCMD0;
TRCMD2  : ËPARMS	ÊTRCMD3;;;;
PARMS   : ;ËSMTBLÏ#0	ÊPRTNUM;PRTNXIT ¢ ¢ ­ ¢ ¬ ¢ ¥ ;;(; OPFREQU- PRINT THE OPCODE FREQUENCIES;
OPFREQU : ¡ ¯ ¡ ± ¡ ;Î#0PMSG1   ÍMSG1,X	‡PMSG1XËCOUTž †PMSG1;MSG1    ä 8D8D8Dß "  OPCODE FREQUENCIES:"	ä 8D8D00NUM+1	ËPRTDEC
ÉCOUNTER
ÍCOUNTERÄ#10
�PRTNUM0Í#$8DËCOUTÍ#0
ÐCOUNTER¯ ¡ Î#14PRTSPC  Í#" "ËCOUTœ 	†PRTSPC¢ ¬ ;;
PRTNUM0 : Í#" "ËCOUTŸ Í(SYMTBL),Y¡ Ÿ Í(SYMTBL),Y
‡PRTNXITÐSYMTBL+1¢ 	ÐSY; PRTSYM- PRINTS AN INDIVIDUAL ;         SYMBOL'S XREF.;
PRTSYM  : ¡ ¯ ¡ ± ¡ ;Í#$8DËCOUTÏ#0PRTNAME Í(SYMTBL),YËCOUTŸ Æ#8
�PRTNAME;Í#" "ËCOUTÍ#0
ÐCOUNTER;PRTNUM  Í(SYMTBL),YÐNUMŸ Í(SYMTBL),YÐNXTAVAIL+1�LOOPPÍPNTR2ÄNXTAVAIL†LBL7
ÍPNTR2+1ÄNXTAVAIL+1‡LOOPP;LBL7    ™ ÍPNTR1À#12ÐPNTR1ƒLOOP4
ÉPNTR1+1;
LOOP4   : ÍPNTR1ÄNXTAVAIL
ÍPNTR1+1ðNXTAVAIL+1�LOOP1;¢ ­ ¢ ¬ ¢ ¥ ;;;;; ¯ ¡ ± ¡ ;
Í#ENDPGMÐPNTR1
Í/ENDPGM
ÐPNTR1+1;LOOP1   ÍPNTR1ÐPNTR2
ÍPNTR1+1
ÐPNTR2+1;LOOPP   ËCMPALF�LOOP2	ËEXCHNG;LOOP2   ™ ÍPNTR2À#12ÐPNTR2ƒLOOP3
ÉPNTR2+1;LOOP3   ÍPNTR2ÄNXTAVAIL
ÍPNTR2+1ðR1),Y¡ Í(PNTR2),YÐ(PNTR1),Y¢ Ð(PNTR2),Y� …EX1¥ ;;CMPALF  Ï#$FF	ÎSYMLEN© ;CMPAF1  Ÿ œ ‚CMPA2Í(PNTR1),Yð(PNTR2),Y	‡CMPAF1¥ »C=0;CMPA2   © ¥ ;;#; SORT SYMBOL TABLE ALPHABETICALLY;
SORT    : ¡ ITÍ#" ";PRTIT   ËCOUTŸ œ …PRTD0¢ ­ ¢ ¬ ¢ ¥ ;;;TBLLOW  å 1å 10å 100å 1000å 10000;TBLHI   æ 1æ 10æ 100æ 1000æ 10000;;;; SYMBOL TABLE SORT ROUTINES;EXCHNG  ÏSYMLEN5� � ;EX1     Í(PNTÎ#4ÑLEAD0;PRTD0   Í#"0"ÐDIGIT;PRTD1   ÍNUMÄTBLLOW,XÍNUM+1
ðTBLHI,X	�PRTDIGÐNUM+1ÍNUMðTBLLOW,XÐNUMÉDIGIT†PRTD1;
PRTDIG  : ÍDIGITÅ#0‡PRTITÄ#"0"	‡TSTDIGÐLEAD0ÊPRTIT;TSTDIG  ÃLEAD0‚PRTAP),YŸ Í#0Ð(NXTHEAP),YŸ Ð(NXTHEAP),Y© 
ÍNXTHEAPð#4
ÐNXTHEAP„SRCHDONEÇNXTHEAP+1;SRCHDONE¢ ¬ ¢ ­ ¢ ¥ ;;;;; PRTDEC- PRINTS THE  INTEGER; CONTAINED IN LOCATION "NUM";
PRTDEC  : ;¡ ¯ ¡ ± ¡ ;(SYMTBL),Y	‡ADDLN2;ADDLN0  Í(SYMTBL),Y¡ � Í(SYMTBL),Y	ÐSYMTBL¢ ÐSYMTBL+1Ï#3Í(SYMTBL),Y	†ADDLN0;
ADDLN2  : ÍNXTHEAP+1Ð(SYMTBL),Y
ÍNXTHEAP� Ð(SYMTBL),Y;Ï#0
ÍLINENUMÐ(NXTHEAP),YŸ ÍLINENUM+1Ð(NXTHEL ÍINPUT,XÄ(SYMTBL),Y†NXTENTRYž Ÿ Æ#8
�SRCHLBL
ÊADDLINE;;NXTENTRYÎ#0Ï#0™ 	ÍSYMTBLÀ#12	ÐSYMTBL
ƒNXTENT0ÉSYMTBL+1;NXTENT0 ÍSYMTBLÄNXTAVAILÍSYMTBL+1ðNXTAVAIL+1
�SRCHLBLÊSRCHDONE;ADDLINE Ï#11Í#","	‡NOTLBLÄ#")"	‡NOTLBLÄ#$8D	‡NOTLBLÄ#"#"	‡NOTLBLÄ#"="	‡NOTLBL
ÐINPUT,YŸ ž 	†STORLP;NOTLBL  ¯ ¡ ;Í#" "FILLBLK ÐINPUT,YŸ Æ#8
�FILLBLK;Î#0Ï#0
Í#ENDPGM	ÐSYMTBL
Í/ENDPGMÐSYMTBL+1;SRCHLBBLE."; IF FOUND THE REFERENCE IS NOTED; IN THE HEAP.;
PUTLABEL: ¡ ± ¡ ;Ï#0STORLP  ÍINPUT,XÄ#"+"	‡NOTLBLÄ#"-"	‡NOTLBLÄ#"*"	‡NOTLBLÄ#"/"	‡NOTLBLÄ#"^"	‡NOTLBLÄ#"|"	‡NOTLBLÄ#"&"	‡NOTLBLÄ#" "	‡NOTLBLÄC;NOTDEC  ¥ ;;;;;;
TSTDEC  : Ä#"0"	�NOTDEC	Ä#"9"+1€NOTDECMLÃZERO¥ ;NOTDECML¡ ¢ ¥ ;ZERO    å 0;;;; ; PUTLABEL- TRANSFER LABEL DOWN; TO LOCATION $200 AND THEN; SEARCHES FOR THE LABEL IN; THE SYMBOL TAGETS ALL HEX DIGITS;
GETHEX  : ;
ÍINPUT,X	ËTSTDEC	‡NXTHEXÄ#"A"	�NOTHEX
Ä#"F"+$1	€NOTHEX;NXTHEX  ž 	ÊGETHEX;NOTHEX  ¥ ;;;;$; GETDEC- RETRIEVES ALL DECIMAL #'S;
GETDEC  : ;
ÍINPUT,X	ËTSTDEC	†NOTDECž 	ÊGETDE;OPRND8  ž ž 	ÊGETNXT;
OPRND9  :;ËPUTLABEL;;#; SEE IF THERE ARE ANY MORE LABELS; ON THE CURRENT LINE;GETNXT  ÍINPUT,XÄ#$8D‡OPRNDXITÄ#" "‡OPRNDXITÄ#")"‡OPRNDXITž 
ÊOPRNDLP;OPRNDXIT¥ ;;;; GETHEX- O7-1
å PSO2L-1
å PSO2L-1å GETMANY-1T
å PSO2L-1å NORMLOPS-1
å NEVER-1
å PSO1L-1
å TSTIF-1å TSTELFI-1å TSTELFI-1
å PSO1L-1
å PSO1L-1	å PSO7-1	å DODA-1	å PSO7-1	å PSO7-1
å DOUSR-1
å PSO7-1 
å NEVER-1
å NEVER-1;;;PSADRSH æ GETMAADRSL,X¡ ¥ ;;PSADRSL å GETMANY-1 å DOEQUATE-1Q
å PSO1L-1
å PSO1L-1å DOEQUATE-1Q
å PSO2L-1
å PSO2L-1
å PSO2L-1
å PSO2L-1	å PSO7-1	å PSO7-1	å PSO7-1
å GHXS-1 å BYTSTR-1Yå GETMANY-1T	å PSO7-1
å DODFS-1
å PSO2L-1
å NEVER-1	å PS *-OPVALUES;OPADRL  å PSEUDOPS-1å SPCLOPS-1å NORMLOPS-1å SWEETOPS-1å SNGLOPS-1å BRANCHES-1;OPADRH  æ PSEUDOPS-1æ SPCLOPS-1æ NORMLOPS-1æ SWEETOPS-1æ SNGLOPS-1æ BRANCHES-1;;;;PSEUDOPS© ð#$D8¬ ÍPSADRSH,X¡ ÍPS;:  CHK FOR BRANCH;:GET7    ÒYSV2	ÍPAG3+9Î#NUMOPRND-1GETOLOOPÄOPVALUES,X	�DOGET0œ …GETOLOOP;; $FF here;NEVER   © ¥ ;DOGET0  ÍOPADRH,X¡ ÍOPADRL,X¡ 	ÍPAG3+9¥ ;;"OPVALUESå $FF,$D8,$D4,$BF,$B2,$96NUMOPRNDÙ'‡FND4Ä#$D‡FND4†FND2;FND4    ÍMCNT
ÐPAG3+$9ÏYSAVŸ Ÿ Ÿ © ¥ ;;
FND3    :ÉMCNTÍMLUP™ À03ÐMLUPƒFND1
ÉMLUP+$1ÊFND1;
FND2    :ÏYSAV™ ¥ ;;:;:;: GETO-GET OPERAND;:GETO    ËBLKDEL;:;:;:;: FNDM-CHECKS TO;: SEE IF CURRENT;: MNEMONIC IS
;: VALID.;:FNDM    ÒYSAVÍ#$80ÐMCNT;
FND1    :Ï#0ÎYSAVÍ(MLUP),Y‡FND2;FND5    ÍPAG2,XËTSTL»Convert L/CÄ(MLUP),Y†FND3ž Ÿ Æ03�FND5	ÍPAG2,XÄ#' YSV2Î#$BMOVLNLP ÍPAG2,Y	ÐPAG3,Xž Ÿ Ä0D
†MOVLNLP;Ï#$8Î#0ÍPG31Ä20†TX28;:CMPRSLN ÍPG31,Y	ÐPG31,Xž Ÿ Ä#$D
†CMPRSLN;:ÑYSAVTX28    Ï01FINDLEN ÍPAG3,YŸ Ä#$D
†FINDLENTX36    ÒPAG3ÊFLSH;::
TX14    :± ¡ 	ÍPAG2,Y	ËBLKDEL	ÍPAG2,YÄ';‡FIXCOMNTÄ0D‡SQUASHLNËEROR#ß 'ILLEGAL BLANK IN OPERAND FIELD'ä 00¢ ÊGETL;FIXCOMNTÍ#";"	ÐPAG2,Y;SQUASHLN¢ ¬ SQSHLP  ÍPAG2,Y	ÐPAG2,Xž Ÿ Ä#$D	†SQSHLP;ÏOGETO;MNELKUP ÍMNTBLÐMLUPÍMNTBL+$1
ÐMLUP+$1ËFNDMƒERR0;:
DOGETO  :ËGETO„CHKAMODEËERORß 'ILLEGAL'ß ' OPERAND.'ä 00ÊGETL;:CHKAMODEËCHKA„TX14ËERORß 'ILLEGAL 'ß 'ADDRESSING'ß ' MODE.'ä 00ÊGETL;:;ÊFLSH;;;
GETMNE  :	ËBLKDEL;;:TX12    ÍPAG2,YËTSTL
„MNELKUPÄ#'.'
‡MNELKUPÄ#'='	‡TX130X;;:ERR0    ËERORß 'ILLEGAL 'ß 'MNEMONIC.'ä 00ÊGETL;:;;; "=", FORCE MNEMONIC;TX130X  Í#$F6	ÐPAG3+9Ÿ 	ÊDLOOP;
ËOPFREQU¥ ;;;;OPCOUNT è 120OPCNTHI è 120;
ENDPGM  : â á ÿÿÿ                                                                                                                                                                      ENCES -------------------"ä 8D00;
PMSG2X  : 
PRTLOOP : 	ÍSYMTBL¡ ÍSYMTBL+1¡ 	ËPRTSYM¢ ÐSYMTBL+1¢ 	ÐSYMTBL;™ 	ÍSYMTBLÀ#12	ÐSYMTBLƒCHKSYMTBÉSYMTBL+1;
CHKSYMTB: 	ÍSYMTBLÄNXTAVAILÍSYMTBL+1ðNXTAVAIL+1
�PRT  "
å 0,0,0,0;
POPCODE : 
ÍLINENUMÐENDPGM+20ÍLINENUM+1ÐENDPGM+21;Í#ENDPGM+12	ÐSYMTBLÍ/ENDPGM+12ÐSYMTBL+1;Î#0PMSG2   ÍMSG2,X	‡PMSG2XËCOUTž †PMSG2;MSG2    ä 8D8DIß "SYMBOL  DEFINED  -------------------- REFERNTR1	ÐSYMTBL
Í/ENDPGM
ÐPNTR1+1ÐSYMTBL+1ËSORT;™ ÍNXTAVAILÀ#12ÐNXTAVAILƒPRTS0ÉNXTAVAIL+1;;;
PRTS0   : ;Î#0FILLOOP ÍDATA,XÐENDPGM,Xž Å#24
�FILLOOP
ÊPOPCODE;DATA    ß "        "
å 0,0,0,0ß "LINES:�POPF3;Í#0
ÐCOUNTERÍ#$8DËCOUTÊPOPF4;POPF3   Í#" "ËCOUT;
POPF4   : ž ™ ÍPNTR1À#3ÐPNTR1ƒPOPF0
ÉPNTR1+1ÊPOPF0;POPFX   ¢ ­ ¢ ¬ ¢ ¥ ;;;;;;; PRINT XREF;
PRTSYMBL: ;
Í#ENDPGMÐP;PMSG1X  Î#0
ÑCOUNTER
Í#MNEMNCÐPNTR1
Í/MNEMNC
ÐPNTR1+1;POPF0   Ï#0POPF1   Í(PNTR1),Y‡POPFXËCOUTŸ Æ#3�POPF1Í#":"ËCOUTÍ#" "ËCOUTÍOPCOUNT,XÐNUMÍOPCNTHI,XÐNUM+1	ËPRTDEC
ÉCOUNTER
ÍCOUNTERÄ#6;:IDX1    ÐPAG2,YÍ06
ÐPAG3+$AÊIND9;:IDX2    ÐPAG2,YÍ#7
ÐPAG3+$AÊIND9; ; ; #; GADR- Get an address expression ; and check its syntax. ; GADR    Í#0 	ÐOPRNDÐÎ#NUMTKNS-1M
ÍPAG2,YGADRLOOPÄTOKENS,X ‡GOTTOKENAG2,YÄ',‡INDXÄ')†ABS2™ ¥ ;:ABS2    Í01
ÐPAG3+$A� ÊIND9;:;:;: HANDLE INDEXED
;: X OR Y;:INDX    Ÿ 	ÍPAG2,YÁ#$DF
ÐPAG2,YÄ'X‡IDX1Ä'Y‡IDX2¢ ¢ ËERORß 'ONLY "X" OR "Y" ALLOWED'ä 00ÊGETL;†DOINDRCTO; INDRCT0 �  INDRCT  Í#3 �  DOINDRCTÐPAG3+10 ;:IND9    Ÿ 	ÍPAG2,YÄ#' ' ‡IN10 Ä#$D ‡IN10 ™ ¥ ;:
IN10    :© ¥ ;:;:;: HANDLE ABSOLUTE;: INDEXED, ETC..;:ABSE    ËGADR„ABS1¥ ;:ABS1    ÍPÄ#$FD»"),"F‡INDRCTYI; BADIND  ¢  ¢  ËEROR %å 'MUST USE ",X)", "),Y", OR ")"',0 ÊGETL ; ; XINDRCT ÍPAG2,Y Ä#')' 
†BADINDÍ#4 †DOINDRCTO; INDRCTY ÍPAG2,Y Á#$DF»Convert to U/C 
ÐPAG2,YÄ#'Y' 
†BADINDÍ#5 IND9;:;:;:;:;: HANDLE INDIRECT;: ADDRESSING MODE;:INDR    Ÿ ËGADR„IND1¥ ;:IND1    ÍPAG2+1,YËTSTLÐPAG2+1,Y©  	ÍPAG2,YŸ  
ðPAG2,YŸ  Ä#$D4»",X"D‡XINDRCTXÄ#9»") "#
‡INDRCTÄ#$1C»")<cr>""‡INDRCT0Iæ IMMD-1 
æ INDR-1 
æ ASCI-1 
æ ASCI-1 ; NM12    ¢  ¢ ËEROR$ß 'ILLEGAL SYMBOL IN OPERAND FIELD'ä 00ÊGETL;;:;:;:;:;: HANDLE IMMEDIATE;: ADDRESSING MODE.;:IMMD    Í02
ÐPAG3+$AŸ ËGADR„IMM1¥ ;:IMM1    � ÊƒNM12 ; JMPABSE ÊABSE JMPIMHX ÊIMHX ; DONORM  Å#5 €JMPABSEJ	ÍAMH,XÍ¡  	ÍAML,XÍ¡  ¥  ; LEADIN  å '#/("''*$!%<>' NUMLEAD Ù *-LEADIN ; AML     å IMMD-1 
å IMMD-1 
å INDR-1 
å ASCI-1 
å ASCI-1 ; AMH     æ IMMD-1 
;: HANDLE BRANCHES.;:BRANCHESËGADR„BRO1¥ ;:BRO1    Í01
ÐPAG3+$A� ÊIND9;:;:;:;: HANDLE "NORMAL";: MNEMONICS.;:NORMLOPSÍPAG2,YÎ#NUMLEAD-1MNRMLOOP ÄLEADIN,X 
‡DONORMœ  …NRMLOOPNËTSTD „JMPIMHXJËTSTL ÍPAG2,YÄ',‡SWO7™ ¥ ;:SWO7    Ÿ ËGADR� ÊIND9;:;:;:;:;: HANDLE "SPECIAL";: MNEMONICS. (ASL,;: LSR,ROR,ROL);:SPCLOPS ÍPAG2,YÄ#$D ‡SPO1Ä';‡SPO1ÊNORMLOPS;:SPO1    Í00
ÐPAG3+$A© ¥ ;:;:;:;; POP RETURN ADDRESS;
SWTREG  :¢ ¢ ËERORß 'ILLEGAL SWEET-16 REGISTER'ä 00ÊGETL;;:;:SWO5    ÊIND9;:;:;: HANDLE "SET";: SW16 MNEMONIC.;:SWO4    Ÿ Í0A
ÐPAG3+$A	ÍPAG2,YËTSTH„SWO8	ÊSWTREG;:SWO8    Ÿ 	
ÐPAG3+$AÊSWO3;:;: SW16 INDIRECT	;: MODE.;:SWO2    Í09
ÐPAG3+$AŸ 	ÍPAG2,YËTSTL»Convert to U/C Ä'R
†BADSWT;:SWO3    ÍPAG3+$9Ä#$BE ‡SWO4;:;: TEST FOR CORRECT;: REGISTAR VALUE.;:Ÿ 	ÍPAG2,YËTSTH„SWO5DDR-;: ESSING MODES.;:SWEETOPSÍPAG2,YËTSTL»Convert U/CÄ#'R'‡SWO1Ä'@‡SWO2;; POP RETURN ADDRESS;
BADSWT  :¢ ¢ ËERORß 'ILLEGAL SWEET-16 OPERAND'ä 00ÊGETL;;:;: SW16 REGISTER-;: DIRECT ADDRESS;:SWO1    Í08;:;:;: HANDLE IMPLIED;: ADDRESSING.;:SNGLOPS ÍPAG2,YÄ#$D ‡SNO2Ä';‡SNO2;; POP RETURN ADDRESS;OPNOTALW¢  ¢ ËERORß 'OPERAND NOT ALLOWED'ä 00™ ÊGETL;:SNO2    Í00
ÐPAG3+$A© ¥ ;:;:;:;: HANDLE SW16 AU	ÊPSO1LÊ; BADEQU  Ï#0 ËEROR !å 'EQU/EPZ MUST HAVE A LABEL',0A¢  ¢  ÊGETL ; TSTELFI ÍPAG2Ä#' '
†BADIFELÊPSO7;TSTIF   ÍPAG2Ä#' '
†BADIFELÊPSO1L;BADIFEL ËERORå 'LABEL NOT ALLOWED HERE',0™ ¥ ;;;:T
æ PSO2L-1æ NORMLOPS-1
æ NEVER-1
æ PSO1L-1
æ TSTIF-1æ TSTELFI-1æ TSTELFI-1
æ PSO1L-1
æ PSO1L-1	æ PSO7-1	æ DODA-1	æ PSO7-1	æ PSO7-1
æ DOUSR-1
æ PSO7-1 
æ NEVER-1
æ NEVER-1;;PSO7    ÊSNGLOPS ; DOEQUATEÍPAG2 Ä#' ' 
‡BADEQNY-1 æ DOEQUATE-1Q
æ PSO1L-1
æ PSO1L-1æ DOEQUATE-1Q
æ PSO2L-1
æ PSO2L-1
æ PSO2L-1
æ PSO2L-1	æ PSO7-1	æ PSO7-1	æ PSO7-1	æ GHXS-1æ BYTSTR-1Yæ GETMANY-1T	æ PSO7-1
æ DODFS-1
æ PSO2L-1
æ NEVER-1	æ PSO7-1
æ PSO2L-1
æ PSO2L-1æ GETMANY-1:TSH1    ™ ¥ ;:TSH2    © ¥ ;:;:;:;: TSTL- TEST FOR;: LETTER.;:TSTL    Ä'A�TSL1	Ä#'Z'+1�TSTL2Ä#'a'�TSL1	Ä#'z'+1€TSL1Á#$DF;
TSTL2   :© ¥ ;:TSL1    ™ ¥ ;:;:;: IMHX-IMMEDIATE;: HEX ADDRESSINGT2Ä#' '‡GST5Ä#','‡GST5Ä#$D †GST1;;:GST5    © ¥ ;:;:;:;: TSTH-TEST FOR HEX;: DIGITS.;:TSTH    Ä#'0'�TSH1Ä':�TSH2Ä#'a'�NU0	Ä#'z'+1€NU0Á#$DF	ÐPAG2,Y;
NU0     :Ä'A�TSH1Ä'G�TSH2;NG.;:
GSTR    :	ÍPAG2,YÄ#'''‡GST3Ä#'"'‡GST3;
GST1    :ËERORß 'ILLEGAL'ß ' STRING'ä 00¢ ¢ ¢ ¢ ÊGETL;:GST3    ÐDELMGST2    Ÿ Æ#$F0 ‡GST1	ÍPAG2,YÄ#$D‡GST1ÄDELM†GST2Ÿ 	ÍPAG2,YÄDELM‡GSH„GHX2ËERORß 'NOT ENOUG'ß 'H DIGITS.'ä 00¢ ¢ ÊGETL;:GHX2    Ÿ †GHXS;:GHX1    Ä#' ' ‡GHX3 Ä#$D ‡GHX3ËERORß 'ILLEGAL H'ß 'EX DIGIT.'ä 00¢ ¢ ÊGETL;:GHX3    © ¥ ;;;;;;:;: GSTR-GET STRIADDODAB^0      ¥  ; DODASTR ËSTRORBYT ƒDODAADRDËGSTR 	ÊNXTOPÊ; ; BADDODA ¢  ¢  ËEROR å 'ILLEGAL OPERAND TYPE',0TÊGETL ; ; ;;:;:;: GHXS-GET HEX;: STRING.;:GHXS    ÍPAG2,YËTSTHƒGHX1Ÿ 	ÍPAG2,YËTST;; HANDLE .DA;DODA    ÍPAG2,Y Ä#'#' ‡DODABYTEOÄ#'/' ‡DODABYTEOÄ#''' ‡DODASTRDÄ#'"' ‡DODASTRD�  ; DODABYTEŸ  DODAADR ËGADR ƒBADDODAB; NXTOP   ÍPAG2,Y Ÿ  Ä#',' ‡DODA �  Ä#' ' ‡>0 Ä#$D †BRE ÍPAG2,Y Ä#','†PS01CŸ 
ÊBYTSTR;CHKSTRNGËSTRORBYT ƒSNGLADRSËGSTR ÊCHKMOREC;; STRORBYTÍPAG2+2,Y 
ÄPAG2,Y†>0 ÍPAG2+3,YA
ÄPAG2,Y‡>0 ÍPAG2+1,YA
ÄPAG2,Y†>1 ; ^0      ©  ¥  ; ^1      ™  ¥  ; 
GOODDFS :PS01C   ©  ¥  ;NOGOOD  ™ ¥ ;;;
GETMANY :ËGADR	ƒNOGOOD	ÍPAG2,YÄ#','†PS01CŸ 	ÍPAG2,YÊGETMANYG;;;;
BYTSTR  :	ÍPAG2,YÄ#'''‡CHKSTRNGHÄ#'"' ‡CHKSTRNGH;SNGLADR ËGADR 	ƒNOGOOD;CHKMOATOR ;:;:#*** Junk for the pseudo opcodes **;:;PSO1L   ÊGADRPSO2L   ÊGSTR;DOUSR   ÍPAG2,Y Ÿ  Ä#$D 	†DOUSR†�  ©  ¥  ;DODFS   ËGADR 
ƒDODFS0
ÍPAG2,YÄ#',' †GOODDFSGŸ  
ÍPAG2,YËGADR ; DODFS0  ¥  ;S �GADRDONEAŸ  ËGADR ƒBADGADR3A; Î#PARTOPS-1R
ÍPAG2,YENDLOOP ÄOPERATOR,X ‡GADRDONEAœ  …ENDLOOPEBADGADR3™  ¥  ; GADRDONE©  ¥  ; ; OPERATORå $D,' ;,)' PARTOPS Ù *-OPERATOR ; å '#=^|&/*+-'|NUMOPTRSÙ *-OPERŸ  
ÍPAG2,YÄ#'"' †BADGADR1A	ÊGAD20Ê; ;ENDADRS ÍOPRND 	‡GADR2‡© ¥ ;; ; ; 
LOCCNTR :GAD20   Ÿ  GAD21   ÍPAG2,Y GAD2    Î#NUMOPTRS-1 OPLOOP  ÄOPERATOR,X ‡GOTOPERGœ  
…OPLOOP™  ¥  ; GOTOPER Å#PARTOP ¥ ;:BINVAL  Î#17 BINLOOP Ÿ  
ÍPAG2,YÓ#'0' Á#$FE †GAD21œ  †BINLOOPBBADGADR1™  ¥  ;:APOST   Ÿ  
ÍPAG2,YÄ#$D ‡BADGADR1AŸ  
ÍPAG2,YÄ#''' †BADGADR1A	ÊGAD20Ê;QUOTE   Ÿ  
ÍPAG2,YÄ#$D ‡BADGADR1A †ABSLOOPABADGADR0™  ¥  ; GOTOGAD2ÊGAD2 ; ;:LCLSPEC Ÿ  
ÍPAG2,YËTSTD ƒBADGADR0A	ÊGAD20Ê;;;SGNDINTGÍPAG2+1,Y Ä'-‡FIXINTGRIŸ  ; FIXINTGRÎ#6 GAD7    Ÿ 	ÍPAG2,YËTSTDƒGOTOGAD2Oœ †GAD7GADR2   ™ aseeGETID   Ÿ  
ÍPAG2,YËTSTL 
ÐPAG2,YËTSDM ƒGOTOGAD2Oœ  	†GETID†ËEROR å 'LABEL TOO LONG',0L™  ¥  ; ; ISDIG   �  Î#1 	ÑOPRNDÑÊFIXINTGRI; ; ;:ABSVAL  Î#5 ABSLOOP Ÿ  
ÍPAG2,YËTSTH ƒGOTOGAD2Oœ  SGNDINTG-1Då BINVAL-1Iå APOST-1Aå QUOTE-1Qå ENDADRS-1D; ; GADRH   æ LOCCNTR-1 æ ABSVAL-1Bæ LCLSPEC-1Læ SGNDINTG-1Dæ BINVAL-1Iæ APOST-1Aæ QUOTE-1Qæ ENDADRS-1D; ; ; ; ; ISID    Î#8 	ÑOPRNDÑÐPAG2,Y»Insure upper cOœ  …GADRLOOPAËTSTL „ISID ËTSTD 	„ISDIG„¥  ; GOTTOKENÍGADRH,X ¡  ÍGADRL,XG¡  Í#1 	ÐOPRNDÐ¥  ; ; TOKENS  å '*$<>!%''";' NUMTKNS Ù *-TOKENS ; ; GADRL   å LOCCNTR-1 å ABSVAL-1Bå LCLSPEC-1Lå LCLSPEC-1LåSLP6; ±  ¡  Ï#0 ÍSYMTÐLPTRÍSYMT+$01ÐLPTR+$01;:;:!; Check for end of symbol table ; and end of zpage equates ; SLP1    Í(LPTR),Y‡SLP3Ä'#†SLP7Í01ÐEYETÊSLP2;:"; Check the current label in the !; table aga‡SLP5Ä')‡SLP5Ä#";"‡SLP5Ä'*‡SLP5Ä'/‡SLP5Ä'|‡SLP5Ä'&‡SLP5Ä'^‡SLP5Ä'=‡SLP5Ä'#‡SLP5; ; ^0      ÐPAG2,X Ÿ ž Å#$8�SLP4Í(POSN),Y;:SLP5    ¡ Í#' ' SLP6    ÐPAG2,Xž Å#$8�SN),YÄ#'>' ‡>0 Ä#'<' †SLP4 ^0      ÊLCLUP1 ;SLP4    Í(POSN),Y; $; Special case for the most likely 	; cases ; Ó#'@' Ä#27 Ó#'@' �>0 Ó#'0' Ä#10 Ó#'0' �>0 ; Ä#$D ‡SLP5Ä'+‡SLP5Ä'-‡SLP5Ä',™ Í(POSN),YÀPOSNÐPOSNƒNEXT3	ÉPOSN+1;
NEXT3   :ÉPOSN†FND0	ÉPOSN+1;ÊFND0;NOMORE  ¥ ;;;;  ; Symbol table lookup routine. $; This must be as fast as possible ; ;SLUP    ¯ ¡ Î00ÑEYET	ÑSYMCNT;:Í(POLPX;
FND0    :Ï#0Í(POSN),YÄ#$FF	‡NOMORE;Ÿ FNDCMP  Í(POSN),Y	ÄPAG2,Y†NEXTŸ Æ#9	�FNDCMP;ËPCIMß 'FOUND AT LINE #'ä 00;ËPINTØ LNUMÍ#$DËPUTC;;
NEXT    :ÉLNUM†NEXT1	ÉLNUM+1;
NEXT1   :Ï#0BLKDELFNDBLK  Ÿ 	ÍPAG2,YÄ#' '	†FNDBLK;	ËBLKDELÎ#0;STOLP   ÍPAG2,YÄ#$D	‡STOLPXÄ#'a'
�NOTUPPR	Ä#"z"+1
€NOTUPPRÁ#$DF;
NOTUPPR :ÐPAG2+1,XŸ ž Å#8�STOLP;STOLPX  Å#8€FND0Í#' 'ÐPAG2+1,Xž 	†STO3	ÑRESULTÐRESULT+$1ÉOP1;DIV3    � †DIV2;ÍOP1ÐSADR	ÍOP1+$1
ÐSADR+$1;¢ ¬ ¢ ­ ¢ ¥ ;;;;; FIND- FINDS SPECIFIED LABEL;
FIND    :ÍSTXTÐPOSN	ÍSTXT+1	ÐPOSN+1Í#1ÐLNUMÍ/1	ÐLNUM+1;Ï#0	Ë†MUL2;ÍOP1ÐSADR	ÍOP1+$1
ÐSADR+$1;¢ ¬ ¢ ­ ¢ ¥ ;;DIVSN   ¡ ± ¡ ¯ ¡ ;Ï#$10Í#$00	ÐRESULTÐRESULT+$1;DIV2    ×OP1	ÖOP1+$1	ÖRESULTÖRESULT+$1© 	ÍRESULTðSADR¬ ÍRESULT+$1
ðSADR+$1ƒDIVELIMÙ *-DELIMTRS ; ;;;
MLTPLY  :¡ ± ¡ ¯ ¡ ;Ï#$10Í#$00	ÐRESULTÐRESULT+$1MUL2    ÍOP1Ô ƒMUL4™ 	ÍRESULTÀSADR	ÐRESULTÍRESULT+$1
ÀSADR+$1ÐRESULT+$1;MUL4    ÕRESULT+$1	ÕRESULT	ÕOP1+$1ÕOP1� 8BBB900;:;:; ; ; ; 
TSDM    :¡  ¯  ¡  ®  
Í$102,XÎ#NUMDELIM-1DDELIMLP ÄDELIMTRS,X ‡ISDELIMIœ  …DELIMLPD©  ƒ*»Hide next opcode è !-1 ; ISDELIM ™  ¢  ¬  ¢  ¥  ; DELIMTRSå ' ,()+-;*/|^&=#',$D NUMD39495C300;:ILST    ä C0C1C4C5C6C8CDCEä CFC2F0D300;:INLS    ä C0C1C4C8CDC2F0D0ä D300;:IXLS    ä C0C1D7C4C7C8C9CDä CFD4C2D6D5F0D0D2ä D300;:IYLS    ä C0C1C4C8CDCEC2F0ä D0D1D300;:SWLS    ä BCBDB2B6B3B5B400;:SILS    ä BCBDB7BAB SILS ; ; WHCHTBLHæ ALST»not used  æ ALST æ ILST æ ILST»not usedoæ INLS æ INLS æ IXLS æ IYLS æ SWLS æ SILS ; ; ALST    ä C0C1D7C4C5C6C7C8ä C9CACBCDCECFD4C2ä D6D5F0D0D1D2D383ä 8081828485868788ä 898A8B8C8D8E8F90ä 91929BLL,XHÐMLUP ÍWHCHTBLH,XH
ÐMLUP+1±  ¡  Ï#0 ; CHK1    Í(MLUP),y ‡BADCHK0BŸ  
ÄPAG3+9†CHK1 ¢  ­  ©  ¥  ; WHCHTBLLå ALST»not used   å ALST å ILST å ILST»not usedoå INLS å INLS å IXLS å IYLS å SWLS åo see if they are compatable ; CHKA    ÍPAG3+10 '‡GOODCHK»implied was already checkedcÄ#10 €GOODCHK»???CÄ#3 †CHK0 
ÍPAG3+9Ä#$CA»JMP (-)J
†BADCHKGOODCHK ©  ¥  ; BADCHK0 ¢  ­  BADCHK  ™  ¥  ; CHK0    ¬  ÍWHCHTRE;: OF IMMEDIATE;: ASCII DATA.;:ASCI    Í02
ÐPAG3+$AŸ 	ÍPAG2,YÄ0D†ASC1ËEROR!ß 'ILLEGAL IMMEDIATE ASCII DATA'ä 00ÊGETL;ASC1    ÊIND9;:;:;:; ; ; CHKA- compares the address  ; expression with the mnemonic !; t	;: MODE.;: IMHX    Ÿ 	ÍPAG2,YËTSTHƒIMH1Ÿ 	ÍPAG2,YËTSTHƒIMH1Ÿ 	ÍPAG2,YIMH1    Ä20‡IMH2Ä0D‡IMH2ËERORß 'ILLEGAL IMMEDIATE HEX DATA'ä 00¢ ¢ ÊGETL;:IMH2    © Í02
ÐPAG3+$A¥ ;:;:;: ASCI-TAKE CA           *; **********************;;
DOWN    :ËSW16¼R3; ; TEST TO SEE IF WE ARE ALREADY; AT THE END OF THE FILE;³R2‘DOWN1	¾
R4,$8D;;; NOW LOOK FOR THE NEXT RETURN; IN THE FILE.;DOWN2   ¼	@R3³R4�DOWN2¼R3³R1ŽUP1‘UP2
UP3     :µR3;;
UP1     :ŠPRTLN¨ 	ÊCOMMND;;;;; **********************; *                    *; * DOWN: MOVES THE    *; * LINE POINTER TO THE*; * BEGINNING OF THE   *; * NEXT LINE.         *; *         ********;;
UP      :ËSW16¾
R4,$8D»INIT R4 WITH RETURN¼R3!³R1»TEST TO SEE IF AT BEGINNINGŽUP1;;´R3»MOVE PAST RETURN;; NOW LOOK FOR THE NEXT RETURN; WHICH OCCURS EARLIER IN THE; FILE;
UP2     :¸	@R3³R4ŽUP3¼R3³ENCOUNTERED.;
PRTLN1  :¼	@R6³R7	ŽPRTLN2	ŠPRTCHR	“PRTLN1;  
PRTLN2  :¼R7	ŠPRTCHR§ ;;;; *********************; *                   *; * UP: MOVES THE LINE*; * POINTER UP ON LINE*; *                   *; *************THE LINE    *; * POINTED AT BY R3. *; *                   *; *********************;;
PRTLN   :	¾
R7,$8D;!; MOVE CURRENT LINE POINTER (R3); TO REGISTER 6;¼R3½R6; ; NOW OUTPUT TEXT INDIRECT THRU; REGISTER 6 UNTIL A RETURN IS; ; * IN PAGE TWO.     *; *                  *; ********************;;GETLN   ¨ Ë$FD6FËSW16§ ;;;; *********************; *                   *; * PRTLN:PRINT LINE. *; * A SWEET-16 SUB-   *; * ROUTINE WHICH WILL*; * PRINT   ¼	@R4½	@R2¼R4³R6’INS5´R2¨ 	ÊCOMMND;;;; ********************; *                  *; * GETLN: SWEET-16  *; * SUBROUTINE WHICH *; * READS A LINE OF  *; * TEXT FROM THE    *; * KEYBOARD AND THEN*; * STORES THE TEXT  *ÍSOURCEÄDESTÍSOURCE+$1
ðDEST+$1	€FILLD2¢ 	ÉSOURCE	†FILLD1ÉSOURCE+$1	ÊFILLD1;FILLD2  ¢ Ð(SOURCE),Y¥ ;;á ÿÿÿ                                                                                                                ; Y REGISTAR DESTROYED (SET TO 0); ACC, X REG SAVED.;; THIS ROUTINE SHOULD BE USED !; WHEN YOU MUST FILL LARGE AREAS ; ( >256 ) OF MEMORY WITH DATA.; FOR SMALL DATA FILLS USE THE; INDEX REGISTARS.;;FILLD   Ï00FILLD1  Ð(SOURCE),Y¡ 	  Ï#$FFSTRCM1  Ÿ œ 	‡STRCM2© Í(SOURCE),Yð(DEST),Y	‡STRCM1¥ ;; HANDLE 256TH COMPARE.;STRCM2  © Í(SOURCE),Yð(DEST),Y¥ ;;;#; FILLD - FILL DATA. FILLS A BLOCK; FROM (SOURCE) TO (DEST) WITH; DATA CONTAINED IN ACC."NTED AT BY DEST THEN;          ACC WILL CONTAIN 1.";          OTHERWISE THE ACC WILL;          BE SET TO $FF.#;          THE X-REGISTAR CONTAINS;          THE NUMBER OF CHARS#;          IN THE STRING. ALL REGS;          ARE DESTROYED.;STRCOMÍASAV™ ¥ ;:;:â LBL     Ø LBLá  ÿÿ                                                                                                                                                                                                              ÄLCLCNT,XC
€FNDBAK
ÊNXTLCL; FWD     ÍLCLCNT,X Ä(LPTR),yL
€NXTLCL; FNDBAK  Ï#2 Í(LPTR),yLÐSADR Ÿ  Í(LPTR),yL
ÐSADR+1; ¢ ­ ¢ ÐASAV¢ ¬ ÍASAV© ¥ ;NOTFND  ¢  ­ ¢ ÐASAV¢ ¬ Í#1ÐEYETOSN),Y¡ ± ¡ ;LCLOOP  Ï#0 ÍLPTR 
ÄENDSYM
ÍLPTR+1ðENDSYM+1N
�NOTFND; Í(LPTR),yLÄDELM ‡FND.ONEF; NXTLCL  ©  ÍLPTR ð#4 ÐLPTR 
„LCLOOP
ÇLPTR+1
†LCLOOP; FND.ONE Ÿ  ÍDIR †FWD ; Í(LPTR),yLP1ÉLPTR+$01ÊSLP1;:SLP3    ™ SLPX    ¢ ­ ¢ ÐASAV¢ ¬ ÍASAV¥ ;:; ; ; Handle local labels ; LCLUP1  Á#'>'^'<' ÐDIR ;
LCLUP2  :	ÍSYMENDÐLPTRÍSYMEND+1	ÐLPTR+1Ÿ Í(POSN),YÐDELMÁ#$F ¬  Ÿ Í(Pinst the label saved ; in pag2 ; SLP7    Í(LPTR),y 
ÄPAG2,Y†SLP2 Ÿ  Æ#8 �SLP7 ;:Í(LPTR),YÐSADRŸ Í(LPTR),YÐSADR+$01©  „SLPX ;:; ; Move on to the next label ; SLP2    ™ Ï#0 ÍLPTRÀ#10 ÐLPTRƒSL;;;; *************************; *                       *; * SETTAB - INITIALIZE   *; * TAB STOPS TO EVERY 8  *; * CHARACTERS.           *; *                       *; *************************;;
SETTAB  :¡ ¯ ¡ ;Î1FÍ80ERE!;	Í#FALSEÎTBXSV¥ ;; A TABSTOP HERE!;TABYES  Í#TRUEÎTBXSV¥ ;TBXSV   ä 00;TABMSK  ä 0102040810204080;;; TABS - TAB STOP ARRAY.;TABS    ä 0000000000000000ä 0000000000000000ä 0000000000000000ä 00000000000000006-BIT  *; * ARRAY. MAXLINE IS    *; * ASSUMED TO BE 256.   *; *                      *; ************************;;
TABPOS  :ÑTBXSVÍCOL	‡TABYESÔ Ô Ô ¬ 	ÍTABS,X¡ ÍCOLÁ07¬ ¢ ÁTABMSK,X	†TABYES;; NO TAB STOP H¥ ;;;; ************************; *                      *; * TABPOS-WHEN CALLED   *; * IT CHECKS THE ARRAY  *; * "TABS" TO SEE IF     *; * THE CURRENT COLUMN   *; * POSITION CONTAINS A  *; * TAB STOP OR NOT.     *; * "TABS" IS A 25B3  :	Í#BLANKËPUTCÉCOL	ËTABPOS Ä#TRUE»REACHED A TAP STOP YET?	†DETAB3ÊDETAB1»CONTINUE;;$DETAB2  Ä#NWLINE»TEST FOR NEWLINE.	†DETAB4ËPUTCÍ00ÐCOL	ÊDETAB1;;DETAB4  ËPUTCÉCOL	ÊDETAB1;;DETABX  ¢ »RESTORE ACC; *                       *; *************************;;COL     ä 00;;DETAB   ¡ »SAVE ACCÍ00»INIT COLÐCOL;
DETAB1  :ËGETCÄ#EOF‡DETABX»EOF?;Ä#TAB»TEST FOR TAB CHARACTER	†DETAB2;; HANDLE TAB CHARACTER HERE.;
DETAITH BLANK CHARACTERS *; * TAB STOPS ARE SET IN  *; * THE ROUTINE SETTAB.   *; * UNLIKE K & P'S ROUTINE*; * THIS DETAB DOES NOT   *; * CALL SETTAB. THIS AL- *; * LOWS THE USER TO SET  *; * THE TABS HOWEVER DE-  *; * SIRED.                *Í#TRUE	ÐINWORDÉWC†WRDC1ÉWC+$1ÊWRDC1;WRDC3   Í#FALSE	ÐINWORDÊWRDC1;WRDC2   ËPUTDECØ WCä 01;
Í#NWLINEËPUTC¢ ¥ ;;;; *************************; *                       *; * DETAB-REPLACES TABS   *; * WÍ00»SET WC:=0ÐWCÐWC+$1Í#FALSE»"TOOLS" USES 'NO'	ÐINWORD;
WRDC1   :ËGETCÄ#EOF‡WRDC2»TEST FOR END-OF-FILE;Ä#BLANK»TEST FOR BLANK‡WRDC3Ä#NWLINE»TEST FOR NEWLINE‡WRDC3Ä#TAB»TEST FOR TAB‡WRDC3;	ÍINWORD”WRDC1D INPUT &  *; * PRINTS THE NUMBER ON  *; * THE STANDARD OUTPUT.  *; * THE WORD COUNT IS ALSO*; * SAVED IN WC.          *; *                       *; *************************;;;WC      ä 0000INWORD  ä 00;;
WRDCNT  :¡ »SAVE ACCCNT1ÉNL»NL:=NL+1	†LNCNT1ÉNL+$1	ÊLNCNT1;LNCNT3  ËPUTDECØ NLä 01;
Í#NWLINEËPUTC¢ ¥ ;;;;; *************************; *                       *; * WRDCNT - WORD COUNT.  *; * COUNTS THE WORDS ON   *; * THE STANDARD RETURNED IN NL.  *; *                      *; ************************;;NL      ä 0000;;
LNCNT   :¡ »SAVE ACC;Í00ÐNL»SET NL:=0ÐNL+$1;LNCNT1  ËGETCÄ#EOF»CHECK FOR END-OF-FILE	‡LNCNT3Ä#NWLINE»CHECK FOR NEWLINE	†LNTORE ACC¥ ;;;;; ************************; *                      *; * LNCNT-LINE COUNT     *; * COUNTS THE NUMBER OF *; * LINES ON THE STANDARD*; * INPUT.               *; * LINE COUNT IS PRINTED*; * ON STANDARD OUTPUT,  *; * AN¡ »SAVE ACC;Í#$00»SET NC:=0ÐNCÐNC+$1;CHRCN1  ËGETCÄ#EOF»TEST FOR END-OF-FILE	‡CHRCN2ÉNC	†CHRCN1ÉNC+$1	ÊCHRCN1;CHRCN2  ËPUTDECØ NC»OUTPUT NC AS A DECIMAL #ä 01;#Í#NWLINE»OUTPUT NEWLINE CHARACTERËPUTC;¢ »RESRACTERS FROM THE  *; * STANDARD INPUT UNTIL *; * EOF. THE CHARACTERS  *; * ARE COUNTED AND THE  *; * COUNT IS RETURNED IN *; * NC (NUMBER OF CHARS).*; *                      *; ************************;;NC      ä 0000;;
CHRCNT  :R2‘DOWN1ŠPRTLN
DOWN1   :¨ 	ÊCOMMND;;END     á ÿÿÿ                                                                                                                                                                                                          *; *************************;;;PASV    ä 00PYSV    ä 00;
PUTLIN  :ÐPASV»SAVE ACCÒPYSV»SAVE Y-REGÏ00PUTL1   Í(ZPAG),YÄ#EOS‡PUTL2ËPUTCËINCZÊPUTL1;
PUTL2   :ÍPASV»RESTORE ACCÏPYSV»RESTORE Y-REG2,XÍZPAG	Ð$101,X
ÍZPAG+$1	Ð$102,Xœ œ ° ¥ ;;;; *************************; *                       *; * PUTLIN-OUTPUTS STREAM *; * OF CHARACTERS UNTIL   *; * EOS (END-OF-STRING) IS*; * FOUND.                *; *          ; ************************; *                      *; * PUTPRM-PUT PARAMETER.*; * RESTORES RETURN AD-  *; * DRESS ON THE STACK.  *; *                      *; ************************;;PUTPRM  ® 	Í$101,XÐ$101-$2,X	Í$102,XÐ$102-$UTINE WHICH     *; * CALLED GETPRM, POPS  *; * IT OFF OF THE STACK  *; * AND STORES IT IN ZPAG*; *                      *; ************************;;GETPRM  ® 	Í$103,XÐZPAG	Í$104,X
ÐZPAG+$1¢ 	Ð$103,X¢ 	Ð$104,X¥ ;;;ÍCÄ#EOF	‡ENTAB6ËPUTC
Ä#NWLINE	†ENTAB7Í0ÐCOL2	ÊENTAB1;
ENTAB7  :ÉCOL2	ÊENTAB1;;ENTAB6  ¢ ¥ ;;; ************************; *                      *; * GETPRM-GET PARAMETER *; * GETS RETURN ADDRESS  *; * OF RO  ÍCOL2	ÐNEWCOL;ENTAB2  ËGETCÐC	Ä#BLANK	†ENTAB3;	ÉNEWCOL	ÍNEWCOLÐCOL	ËTABPOSÄ#TRUE	†ENTAB2Í#TABËPUTC	ÍNEWCOLÐCOL2	ÊENTAB2;ENTAB3  ÍCOL2	ÄNEWCOL	€ENTAB5	Í#BLANKËPUTCÉCOL2	ÊENTAB3;;ENTAB5   BLANKS *; * WITH THE TAB CHAR.*; * TABS CONTAINS THE *; * TAB STOPS TO BE   *; * USED.             *; *                   *; *********************;;NEWCOL  ä 00COL2    ä 00C       ä 00;;
ENTAB   :¡ ;Í00ÐCOL2;ENTAB1;INCZ    ÉZPAG†INCX
ÉZPAG+$1INCX    ¥ ;
LZIZ    :¡ ± ¡ Ï00Í(ZPAG),Y¡ Ÿ Í(ZPAG),Y
ÐZPAG+$1¢ ÐZPAG¢ ­ ¢ ¥ ;;;;; *********************; *                   *; * ENTAB - REPLACES  *; * STRINGS OF;Æ#$00‡ITOC5Ä#ZERO‡ITOC4ÐLEAD0;
ITOC4   :ÃLEAD0…ITOC6ITOC5   ÐCHRSTR,Xž ITOC6   � …ITOC1Í#EOSÐCHRSTR,XÍPTASVÏPTYSVÎPTXSV¥ ;;;;;;DECZ    ¡ ÍZPAG†DECZ1
ÇZPAG+$1DECZ1   ÇZPAG¢ ¥ AD0»INIT LEAD0 TO A NON-NEGATIVE #;
ITOC1   :Í#ZEROÐDIGIT;
ITOC2   :© ÍZPAG	ðT10L,Y¡ 
ÍZPAG+$1	ðT10H,Y�ITOC3;
ÐZPAG+$1¢ ÐZPAGÉDIGITÊITOC2;;
ITOC3   :¢ »"FIX" STACKÍDIGIT;; CHECK FOR LEADING 0'S HERE       *; *                      *; ************************;;;LEAD0   ä 00DIGIT   ß "0"PTYSV   ä 00PTASV   ä 00PTXSV   ä 00;T10L    ä 010A64E810T10H    ä 0000000327;;;ITOC    ÐPTASVÒPTYSVÑPTXSV;Ï04Î00'ÑLE           *; * ITOC-INTEGER TO CHAR.*; * CONVERTS INTEGER (16-*; * BIT UNSIGNED BINARY) *; * IN LOCATION ZPAG AND *; * STORES THE CHARACTER *; * STRING BEGINNING IN  *; * LOCATION CHRSTR.     *; * STRING IS TERMINATED *; * WITH EOS.     DC1;;PTDC2   ÆW€PTDC3	Í#BLANKËPUTCŸ ÊPTDC2;;
PTDC3   :Ï00)PTDC4   ÍCHRSTR,Y»OUTPUT INTEGER STRINGÄ#EOS‡PTDC5ËPUTCŸ ÊPTDC4;;PTDC5   ÍPDCASV	ÏPDCYSV¥ ;;;; ************************; *           ËGETPRMËINCZËINCZËINCZËPUTPRM»PUSH RETURN ADDRESSËDECZ»GET ADDRESS OF INTEGERËDECZÏ02Í(ZPAG),Y»GET FIELD WIDTHÐWËLZIZËLZIZËITOC;Ï00
PTDC1   :ÍCHRSTR,Y»COMPUTE LENGTH OFÄ#EOS»INTEGER STRING‡PTDC2Ÿ ÊPT; * INTEGER.  NUMBER  *; * OUTPUT IS UNSIGNED*; * 16-BIT DECIMAL    *; * INTEGER.          *; *                   *; *********************;PDCASV  ä 00PDCYSV  ä 00W       ä 00CHRSTR  ß "          ";;
PUTDEC  :	ÐPDCASV	ÒPDCYSV	STTAB1  ÐTABS,Xœ 	…STTAB1;¢ ¬ ¢ ¥ ;; *********************; *                   *; * PUTDEC-OUTPUTS DEC*; * NUMBER WHOSE AD-  *; * DRESS FOLLOWS THE *; * JSR. A FIELD WIDTH*; * (ONE BYTE) FOLLOWS*; * THE ADDRESS OF THE*ËINTDOSËMSGä 8D84ß "MON O,I,C"ä 8D00ËOPENØ TESTËWRITEØ TEST;ËMSGä 8Dß "HELLO THERE"ä 8Dß "HOW ARE YOU TODAY?"ä 8D00ËCLOSEØ TESTËOPENØ TESTËREADØ TESTËMSG	ß "HERE"ä 00Í00	ÐEOFLAG	ËWRDCNTËCLOS *; *************************;;GTLA    ä 00GTLY    ä 00GTLX    ä 00;;GETLIN  ÐGTLAÒGTLYÑGTLX;ËGETLNZ»APPLE READ LINE;Í02!ÐZPAG+$1»SET UP ZPAG FOR PUTLINÍ00ÐZPAG;ÍGTLAÎGTLXÏGTLY¥ ;;;
START   :	LINÍ#CRËPUTCÍDASVÏDYSVÎDXSV¥ ;;;; *************************; *                       *; * GETLIN-READS A LINE OF*; * TEXT FROM THE STANDARD*; * INPUT AND STORES IT IN*; * PAGE TWO.             *; *                      INCZËINCZ	ËPUTPRMËDECZËDISK4¥ ;;;; *************************; * DISK3 & DISK4 ARE     *; * UTILITIES REQUIRED BY *; * READ AND WRITE.       *; *************************;;DISK3   ËDISK1¥ ;;
DISK4   :ËLZIZ	ËPUT*; * TED AT BY THE ADDRESS  *; * FOLLOWING THE JSR.     *; **************************;READ    ËDISK3Ï00Í(ZPAG),YÄ"#‡ISLOTËMSGä 8D84
ß "READ "ä 00ÊREAD1;;ISLOT   ËMSGä 8D84ß "IN"ä 00;
READ1   :	ËGETPRMË;ËMSGä 8D84ß "WRITE "ä 00	ÊWRITE1;;OSLOT   ËMSGä 8D84ß "PR"ä 00;
WRITE1  :	ËGETPRMËINCZËINCZ	ËPUTPRMËDECZËDISK4¥ ;;;; **************************; * READ-READS FROM FILE   *; * WHOSE FILENAME IS POIN- FOLLOWS THE   *; * JSR (WHERE N IS AN *; * INTEGER 0-15) THEN *; * THE STANDARD OUTPUT*; * IS DIRECTED TO THAT*; * PARTICULAR SLOT.   *; *                    *; **********************;;WRITE   ËDISK3Ï00Í(ZPAG),YÄ"#‡OSLOTLZIZ	ËPUTLINÍ#CRËPUTC;ÍDASV»RESTORE REGISTARSÏDYSVÎDXSV¥ ;;;;; **********************; *                    *; * WRITE-DIRECTS STAN-*; * DARD OUTPUT TO FILE*; * WHOSE FILENAME FOL-*; * LOWS THE JSR. IF A *; * "#N"    ä 00;;DISK1   ÐDASVÒDYSVÑDXSV;Í80 ÐRUNMOD»SIMULATE A RUNNING PGM;Í#WARMST»INIT ERROR VECTORS	ÐDOSERR
Í/WARMST	ÐDOSERR;Í00»SIMULATE INTEGER BASICÐLANG;ËINTDOS»MAKE SURE DOS IS ON¥ ;;;
DISK2   :;ËËDISK2¥ ;;;; ************************; *                      *; * DISK1-PRELIMINARY    *; * STUFF FOR DISK OPEN, *; * CLOSE, & APPEND.     *; *                      *; ************************;;DASV    ä 00DYSV    ä 00DXSVBUT POSIT-  *; * IONS THE RECORD      *; * POINTER AFTER THE    *; * LAST RECORD.         *; *                      *; ************************;;APPEND  ËDISK1ËMSGä 8D84ß "APPEND "ä 00	ËGETPRMËINCZËINCZ	ËPUTPRMËDECZ     *; *************************;;CLOSE   ËDISK1ËMSGä 8D84ß "CLOSE "ä 00	ËGETPRMËINCZËINCZ	ËPUTPRMËDECZËDISK2¥ ;;;; ************************; *                      *; * APPEND-OPENS A FILE  *; * ON DISK,  8D84
ß "OPEN "ä 00	ËGETPRMËINCZËINCZ	ËPUTPRMËDECZËDISK2¥ ;;;; *************************; *                       *; * CLOSE-CLOSES A FILE   *; * PREVIOUSLY OPENED BY  *; * THE OPEN ROUTINE.     *; *                  ********************; *                       *; * OPEN-OPENS A FILE ON  *; * DISK AND POSITIONS THE*; * FILE POINTER AT THE   *; * FIRST RECORD.         *; *                       *; *************************;;OPEN    ËDISK1ËMSGä****************;;MASAVE  ä 00MXSAVE  ä 00;;MSG     ÐMASAVE	ÑMXSAVEËGETPRM»GET ADDRESS OF STRING%ËINCZ»INCREMENT TO GET TRUE ADDRESSËPUTLIN»OUTPUT STRING ËPUTPRM»RESTORE RETURN ADDRESS	ÎMXSAVE	ÍMASAVE¥ ;;;;; *****¥ ;;;; *************************; *                       *; * MSG - OUTPUT MESSAGE. *; * MESSAGE IMMEDIATELY   *; * FOLLOWS THE JSR AND IS*; * TERMINATED WITH AN EOS*; * CHARACTER.            *; *                       *; *********ß 'INS'ä 0D00ËTRSP;WRITE1  Ï#$0Í(POSN),YÄ#$FF	‡WRITE2ËPRTLËINCL	ÊWRITE1;WRITE2  ËPCIMä 050D0D04
ß 'CLOSE'	ä 0D0D00¥ ;;; APPLE DOS COMMAND;;DOSCMD  ËDISKËCROUT	ËPRTPG2ËPCIMä 0D040D00RTS2    ¥ YPE; FILE;;
WRITE   :;ËUNBLK± ¡ ËDISKËPCIMä 0D04	ß 'OPEN'ä 00	ËPRTPG2Í#$DËPUTCËPCIMä 0D04
ß 'WRITE'ä 00;¢ ­ WLP0    ÍPAG2,YÄ#','‡WRT10Ä#$D‡WRT10ËPUTCŸ †WLP0;
WRT10   :ËPCIMå $D;;;; PRINT LENGTH OF FILE;;
LENGTH  :;	ËPRTLENÊCROUT;;;; CLEAR FILE IN MEMORY;
NEW     :;ËPCIMä 0Dß 'CLEAR?'ä 00ËRDLNËBLKDÁ#$DFÄ#'Y'	†RETURNÊCLDS;RETURN  ¥ ;;; ; WRITE FILE OUT AS A TEXT Tå USRP	å RETURN	å DOSCMD	å RETURN;;CTBLH   æ RESETæ LOAD	æ LENGTHæ SAVEæ APNDæ ISRTæ DELTæ LISTæ ASSMæ NEWæ EDITæ WRITEæ FINDæ USRP	æ RETURN	æ DOSCMD	æ RETURN;;; FIND LABEL COMMAND;FIND    Ã$C088	ÊFNDSTROCHR  ß 'ROEAP'NUM2CH  Ù *-TWOCHR;;DOCMD   ÍCTBLL,XÐADDR
ÍCTBLH,X	ÐADDR+1	ËINDRCTÊCMND;INDRCT  Ê(ADDR);;;;CTBLL   å RESETå LOAD	å LENGTHå SAVEå APNDå ISRTå DELTå LISTå ASSMå NEWå EDITå WRITEå FIND5F;NEXT3   ÄCMDS,X†NEXT2
Å#NUM2CH€DOCMDÍPAG2+1,YÁ#$5F»UPR CONVERSIONÄTWOCHR,X‡DOCMD;NEXT2   ž 
Å#CMDLEN�NEXT1ËPCIMä 0D07
ß 'WHAT?'ä 0D00ÊCMND;CMDS    ß 'BLLSAIDLANMWF'ä 100D0403CMDLEN  Ù *-CMDS;;TW;Í#$4Ð$A33EÐ$A366Ð$A36D;$; PATCH DOS CATALOG DISPLAY ROUTINE;Í#"L"Ð$B3AE;; SET BASIC RUN FLAGS;Í#$80Ð$D9Ð$33Í#1Ð$76Ð$75;Î#$0NEXT1   ÍPAG2,YÄ#'a'�NEXT3;; CONVERT LOWER TO UPPER CASE;Á#$;;;;
IERR    :ËISR2;CMND0   Î#$FF° ËSTKYÍ#CONSLOTËSTVDËINIT;;
CMND    :;; SET MON O,I,C;Í#$70ÐMON1ÐMON2Í'!ËPUTCËRDLNÏ00ËBLKD;;#; PATCH DOS, RESET BSAVE AND BLOAD; FOR "B" TYPE FILE.;MTBL    Ø TB80LINMAX  å !62PRTTTL  å !1;:DISK    Ê$A851;; CLOCK DATA;CLKSLT  å 4CN05    å $20CN07    å $C8;ó IS64K;ENDSYM  Ø $94F0;ô ;ENDSYM  Ø $5FF0;õ ;#; ENTRY FOR USER-DEFINED PSEUDO-OP;USROP   ¥     ô ;PAG2    Ù $9800PAG3    Ù $9881;õ ;;RESETL  Ù $3F2;:;:ÊCLDSÊCMND0ÊIERRUSRP    ÊCMNDÊPHEXÊPRTLÊFENDÊPRLNÊBLKD;;ó IS64K;USR1    ä 18USR2    ä 80;ô ;USR1    ä 18USR2    ä 58;õ ;; POSN+$2CPOS    Ü TPOS+$2HMEM    Ü CPOS+$2LNUM    Ü HMEM+$2FRST    Ü LNUM+$2LAST    Ü FRST+$2ASAVP   Ü LAST+$2XSAVP   Ü ASAVP+1TAPH    Ü XSAVP+1MLUP    Ü TAPH+$2CSAV    Ü MLUP+$2;:;ó IS64K;PAG2    Ù $9500PAG3    Ù $9581; PUTC+$3PCIA    Ù PINT+$3;:VDLO    Ü $0036VDHI    Ü $0037KYLO    Ü $0038KYHI    Ü $0039CH      Ü $24;;CHRCNT  Ü $A0ADDR    Ü $E0BDDR    Ü ADDR+$2CDDR    Ü BDDR+$2STXT    Ü CDDR+$2ETXT    Ü STXT+$2POSN    Ü ETXT+$2TPOS    Ü Ù $8809;õ ;;;ó IS64K;RDLN    Ù $E880;ô ;RDLN    Ù $6880;õ ;;PCIM    Ù RDLN+$3MOVR    Ù PCIM+$3MOVL    Ù MOVR+$3TSTD    Ù MOVL+$3CVDH    Ù TSTD+$3INIT    Ù CVDH+$3PSPC    Ù INIT+$3PUTC    Ù PSPC+$3PINT    Ù5STKY    Ù $FE89CROUT   Ù $FD8EPHEX    Ù $FDDAHOME    Ù $FC58RESET   Ù $FF65BASICTBLÙ $9D56MON1    Ù $AA74MON2    Ù $AA5E;ó IS64K;ASSM    Ù $EBE0GETL    Ù $D000FNDSTR  Ù $D009;ô ;ASSM    Ù $6BE0GETL    Ù $8800FNDSTR  POSSIBLE.;;;               RANDY HYDE;;;;:
;: P1.TXT;:;;TRUE    Ù 1FALSE   Ù 0IS64K   Ù TRUE;ó IS64KÚ $E000ô Ú $6000õ ;Û $800;; CHANGE CONSLOT TO 3 FOR AN; 80-COLUMN LISA.;CONSLOT Ù 0;STVD    Ù $FE9EØ TEST	ÊWARMST;TEST    ß "TEST"ä 00á ÿÿÿ                                                                                                                                                                                                          TE.;:
DELT    :ËUNBLKËGETN„DEL1¥ ;:DEL1    ± ¡ ËTRALËLOCLÏ00Í(POSN),YÄ0FF†DEL2¢ ¥ ;:DEL2    ËTRPC¢ ­ ËBLKDÄ',†DEL3Ÿ ËBLKDËGETN„DEL4¥ ;:DEL4    ËTRALËINCLËLOCLËTRPAËFELNËPRTLËINCL;; JUST PRINT LAST LINE NUMBER; SPECIFIED?;ÍLNUMÄLAST	ÍLNUM+1	ðLAST+1�LIS6»IF NOT, NEXT LINE;LIS7    ¥ ;:;:;:;: INCL-INCREMENT LNUM;:INCL    ÉLNUM†INL1ÉLNUM+$01INL1    ¥ ;:;:;: DELT-DELEÄ#$A0†LIST2;LIST3   Í$C000…LIST3Ã$C010;LIST2   Ä#$83»CONTROL-C?†LIST1ÊCMND0;;; SEE IF AT END OF FILE, QUIT; IF WE ARE;
LIST1   :Ï00Í(POSN),YÄ#$FF‡LIS7;; PRINT THE CURRENT LINE IF; NOT AT EOF;ËPR:;; LIST ALL LINES;LIS1    Í01ÐLNUMÍ00ÐLNUM+$01Í0FFÐLASTÐLAST+$01;:;; FIND THE FIRST LINE TO LIST;LIS5    ËLOCL;;"; LIST LOOP- FIRST CHECK KEYBOARD; TO CHECK FOR PAUSE;
LIS6    :Í$C000…LIST1Ã$C010;LIST THE NEXT 20 LINES;
LIST20  :;; CARRY ALREADY CLEARED BY CMP;ÍLNUMÀ#21ÐLAST	ÍLNUM+1À#0	ÐLAST+1ÊLIS5;;;; LIST A RANGE OF LINES;;:LIS3    ÍADDRÐLAST	ÍADDR+1	ÐLAST+1;ÉLAST†LIS5	ÉLAST+1ÊLIS5;GTN1    ËPCIM
ß 'BAD #'ä 0D00™ ¥ ;:;:;:; LIST A FILE WITH SPECIFIED	; BOUNDS;;;;LIST    ËUNBLKÄ0D‡LIS1ËGETN„LIS2¥ ;:LIS2    ËTRALËBLKDÄ',†LIS3Ÿ ËBLKDÄ#$D	‡LIST20ËGETN„LIS3¥ ;; BDDRÍHMEM+$01ÐBDDR+$01ËMOVLÏ#0Í#$FF;ENDLP   Ð(CDDR),YŸ †ENDLPÊFEND;:;:;; GETN- GET A NUMBER FROM; THE INPUT BUFFER AND CONVERT; TO BINARY;;:GETN    ËTSTDƒGTN1ËCVDHÍADDRÂADDR+$01‡GTN1© ¥ ;:ON POINTED AT BY"; POSN.  POSN IS UPDATED TO POINT; AT THE MEMORY LOCATION JUST; PAST THE NEWLY ENTERED LINE.;ËGETLËINCLISR5    ÍPAG2Ä#0 	‡ISRTX‡Ä05†ISR2;:ISRTX   ÍCSAV+$01 ÐADDR+$01ÍCSAVÐADDR;ËTRPCÍHMEMÐM+1	ÐCDDR+1ËMOVRËTRPA;:ÍCDDRÐCSAVÍCDDR+$01ÐCSAV+$01;:ISR2    ËCLRP;; SELECT RAM BANK #1;Í$C088;; GETL IS A MAGIC ROUTINE; THAT READS AN INPUT LINE,; TOKENIZES IT, AND STUFFS; THE TOKENIZED LINE AT THE; LOCATIÀPOSNÐETXT	ÍPOSN+1À#0	ÐETXT+1¢ ­ ¢ ¥ ;:;:;:;: ISRT-INSERT.;:
ISRT    :ËFENDÍ#$FFÐLNUMÐLNUM+$01ËUNBLKÄ0D‡ISR1ËGETN„ISR4¥ ;:ISR4    ËTRALISR1    ËLOCLËTRPAËTREBÍHMEMÐCDDR	ÍHME¥ ;:;:;:INCP    ÉPOSN†INP1ÉPOSN+$01INP1    ¥ ;:;:;:;:;:; FIND THE END OF THE FILE IN
; MEMORY.;;:
FEND    :¡ ± ¡ ËTRSPÏ00FEN1    Í(POSN),YÄ0FF‡FEN2Ÿ †FEN1	ÉPOSN+1†FEN1;;:FEN2    ± ™ ;:;:TRAL    ÍADDRÐLNUMÍADDR+$01ÐLNUM+$01¥ ;:;:;:TREB    ÍETXTÐBDDRÍETXT+$01ÐBDDR+$01¥ ;:;:;:;:TRPC    ÍPOSNÐCDDRÍPOSN+$01ÐCDDR+$01¥ ;:;:;:;:TRSP    ÍSTXTÐPOSNÍSTXT+$01ÐPOSN+$01	ÐLNUM+1LOC2    ¥ ;:;;; CLEARS INPUT BUFFERS;CLRP    ¡ ± ¡ Í20Ï4F;:CLR1    ÐPAG2,Y	ÐPAG3,Y� …CLR1;:¢ ­ ¢ ¥ ;:;:;; VARIOUS TRANSFER UTILITIES;TRPA    ÍPOSNÐADDRÍPOSN+$01ÐADDR+$01¥ ;:Í01ÐBDDRÏ00ÒBDDR+$01;:LOC1    ÍBDDRÄLNUMÍBDDR+$01ðLNUM+$01€LOC2;:Í(POSN),YÄ0FF‡LOC4™ ÀPOSNÐPOSNƒLOC3ÉPOSN+$01;:LOC3    ËINCPÉBDDR†LOC1	ÉBDDR+1ÊLOC1;:LOC4    ÍBDDRÐLNUM	ÍBDDR+1L1Ä0D‡FBL1Ÿ †FBLK;:;:;:UNBLK   ËFBLK;;; REMOVE LEADING BLANKS FROM
; A LINE.;BLKD    ÍPAG2,YÄ20†FBL1Ÿ †BLKD;:FBL1    ¥ ;:;; LOCL- LOCATE LINE.; FINDS LINE NUMBER SPECIFIED
; BY LNUM;LOCL    ËTRSP;"; UTILITY TO PRINT THE INPUT LINE	; BUFFER;
PRTPG2  :	ÍPAG2,Y‡RTS2Ä#'a'
�PRTPG20Á#$5F;
PRTPG20 :Ä0D‡RTS2;;ËPUTCŸ 	ÊPRTPG2;;; ; FIND THE NEXT BLANK CHARACTER; ON THE LINE;;:FBLK    ÍPAG2,YÄ20‡FBY STATES;  THAT THIS PRODUCT IS COPY-;  RIGHTED BY RANDY HYDE D.B.A;  LAZER SYSTEMS.;;;;ËHOMEÍ#CONSLOTËSTVDËPCIMä 0C0Dß '  LAZER SYSTEM''S'ä 0Dß '  INTERACTIVE'ä 0Dß '  SYMBOLIC'ä 0Dß '  ASSEMBLER'ä 0D0Dß '(C) ; WARNING!!!!;!;  LISA IS A COPYRIGHTED PROGRAM;  PROTECTED BY U.S COPYRIGHT;  LAWS AND THE CONTRACT YOU;  IMPLICTLY AGREED UPON BY;  PURCHASING LISA.;!;  ANY MODIFICATIONS TO LISA YOU;  MAKE MUST CARRY THE SIGN-ON ;  MESSAGE WHICH CLEARLSTXTÐPOSNÐHMEMÐETXTÍUSR1ÐSTXT+$01ÐPOSN+$01ÐETXT+$01ÍUSR2ÐHMEM+$01Í0FFÐ(POSN),Y;; PATCH ERROR VECTORS IN DOS;Î#45FIXDOS  Í/CMND0ÐBASICTBL,Xœ 	Í#CMND0ÐBASICTBL,Xœ 	…FIXDOS;; PRINT SIGN-ON;;UTSPCž †PRLN1;PRLN2   ËPINTØ LNUM;PUTSPC  Í#' 'ÊPUTC;TENL    å 1000å 100å 10å 0;TENH    æ 1000æ 100æ 10æ 0;;;:;:; LISA COLDSTART ROUTINE;;:CLDS    š ;; SET UP INITIAL FILE POINTERS;Í00­ Ð0	ðCHRCNTËPSPC;
PRT18   :	ËPUTSPC;;PRT13   Í(POSN),YËPUTCÄ0D‡PRT7Ÿ ÊPRT13;;;;;;;; ; PRINT THE CURRENT LINE'S LINE	; NUMBER;;:;:PRLN    Î#0PRLN1   ÍLNUM	ÄTENL,X	ÍLNUM+1	ðTENH,X€PRLN2	ËPAINDER OF LINE AS; STANDARD TEXT;PRT6    Í(POSN),Y	ÉCHRCNTÄ";‡PRT15ËPUTCÄ0D‡PRT7Ÿ †PRT6PRT7    Ï00™ Í(POSN),YÀPOSNÐPOSNƒPRT8ÉPOSN+$01PRT8    ËINCP¥ ;:
PRT15   :	ÍCHRCNTÄ10€PRT18;© Í#$1F¡ × ÐMLUP™ ¢ ÀMLUPÐMLUPƒPRT4ÉMLUP+$01;:PRT4    ÍMLUP™ ÀTB8AÐMLUPÍMLUP+$01ÀTB8A+$01ÐMLUP+$01;:± ¡ Ï00PRT5    Í(MLUP),YËPUTCŸ Æ03�PRT5¢ ­ ;;;Ÿ Ÿ 	ËPUTSPC;;; OUTPUT REMTCËCROUTÊPRT7;;;;PRT101  ¢ Í':	ÊPRT102;PRT10   ËPUTSPCŸ Æ#$9�PRT10;;:PRT9    ËPUTSPCÊPRT3;:PRT1    Í#$9ËPSPC;:;; COMPUTE INDEX INTO MNEMONIC; TABLE AND PRINT MNEMONIC;PRT3    Í(POSN),YÁ#$7Ä';†PRT2PPRT8   ÊPRT6;:;; ITS A LABEL, OUTPUT IT;PRT2    Í(POSN),Y‚PRT10Ä#' '	†PRT100± ¡ Ï#$9Í(POSN),YÄ':	‡PRT101¢ ­ ÊPRT10;
PRT100  :ËPUTCŸ Æ#$9�PRT2Í(POSN),YÄ':†PRT9
PRT102  :ËPUUTINE; DOES THE DETOKENIZATION.;;:PRTL    Ï00	ÒCHRCNTÒMLUP+$01Í(POSN),YÄ0FF†PPRT7ÊPRT7
PPRT7   :Ÿ Í(POSN),Y‚PRT1»NO COMMENT OR LABEL?;;; EITHER A COMMENT OR A LABEL.; CHECK FOR A COMMENT FIRST;Ä#'*'‡PPRT8ß 'PAG'ß 'INV'ß 'BLK'ß 'DBY'ß 'TTL'TBF0    ß 'SBC'ß "???"ß 'LET'ß '.IF'ß '.EL'ß '.FI'ß '=  'ß 'PHS'ß 'DPH'ß '.DA'ß 'GEN'ß 'NOG'ß 'USR'	å 'ENZ'åä 00;:;:;: ; PRTL- PRINTS THE LINE POINTED; AT BY "POSN".  THIS ROD0    ß 'STA'ß 'STX'ß 'STY'ß 'XOR'ß 'LSR'ß 'ROR'ß 'ROL'ß 'ASL'ß 'ADR'ß 'EQU'ß 'ORG'ß 'OBJ'ß 'EPZ'ß 'STR'ß 'DCM'ß 'ASC'TBE0    ß 'ICL'ß 'END'ß 'LST'ß 'NLS'ß 'HEX'ß 'BYT'ß 'HBY'ß 'PAU'ß 'DFS'ß 'DCI'ß "FLT"'ß 'INR'ß 'SUB'ß 'LDD'ß 'POP'ß 'PPD'ß 'STD'ß 'STP'ß 'LDR'ß 'STO'ß 'SET'ß "???"TBC0    ß 'ADC'ß 'AND'ß 'ORA'ß 'BIT'ß 'CMP'ß 'CPX'ß 'CPY'ß 'DEC'ß 'EOR'ß 'INC'ß 'JMP'ß 'JSR'ß "???"ß 'LDA'ß 'LDX'ß 'LDY'TBß 'CLD'ß 'CLI'ß 'DEX'ß 'DEY'ß 'INX'ß 'INY'TBA0    ß 'NOP'ß 'PHA'ß 'PLA'ß 'PHP'ß 'PLP'ß 'RTS'ß 'RTI'ß 'RSB'ß 'RTN'ß 'SEC'ß 'SEI'ß 'SED'ß 'TAX'ß 'TAY'ß 'TSX'ß 'TXA'TBB0    ß 'TXS'ß 'TYA'ß 'ADD'ß 'CPR'ß 'DCRTB80TB80    ß 'BGE'ß 'BLT'ß 'BMI'ß 'BCC'ß 'BCS'ß 'BPL'ß 'BNE'ß 'BEQ'ß 'BVS'ß 'BVC'ß 'BSB'ß 'BNM'ß 'BM1'ß 'BNZ'ß 'BIZ'ß 'BIM'TB90    ß 'BIP'ß 'BIC'ß 'BNC'ß 'BRA'ß 'BTR'ß 'BFL'ß 'BRK'ß 'BKS'ß 'CLV'ß 'CLC'NDËTREBËMOVL¥ ;:DEL3    Ï00Í(POSN),Y™ ÀPOSNÐADDRÍPOSN+$01À00ÐADDR+$01ÉADDR†DEL5ÉADDR+$01DEL5    ËFENDËTREBËMOVL¥ ;:
EDIT    :± ¡ ËLIST¢ ¡ ­ ËDELT¢ ­ ËISRT¥ ;;:TB8A    Ø   þ                                z          #                                                                          ÿ             ÿ   ?                         ÿ   ?  ÿÿ  ÿÿ  ÿÿ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               	                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ÔÒÁÃÅ                          @ÕÔÉÌÉÔÉÅÓ                      @ÔØÔÅÄ¯Ó×ÅÅÔ­±¶                 @ÓÏÆÔ×ÁÒÅ ÔÏÏÌÓ                @ @ÌÉÓÁ Ð±®Ì                     E @ÍØÆÌÓ®ÔØÔ                       Ð¶®ÔØÔ                        
          ÌÉÓÁ Ö²®µ ÆÌÉÐÓÉÄÅ             @ÔÒÁÃÅ®ÔØÔ                     , @ØÒÅÆ®ÔØÔ                      * @ÓÏÒÔ®ÔØÔ                       ØÒÅÆ                           ØÒÅÆ®ÏÂÊ Ö²®°                 
 @ÌÉÓÁ Ð³®Ì                     O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	ÐPAG2,XÊDISK;;
END     :á ÿÿ                                                                                                                                                                                                                      TXTðSTXTÐPOSNÍETXT+$01ðSTXT+$01ÐPOSN+$01ËINCPËINCP;;;;:PHXP    ÍPOSN+$01ËPHEXÍPOSNÊPHEX;:;:;:SAV1    Ù LOD1;;:;:MOVNAM  Î00SAV2    ÍPAG2,YÄ0D‡SAV3	ÐPAG2,Xž Ÿ †SAV2;SAV3    Í#0FBLKÄ0D‡SAV1;:	ËMOVNAM;ËPCIMä 0D04
ß 'BSAVE'ä 00Ï#0	ËPRTPG2ËPCIMß ',A$'ä 00ËPRHXËPCIMß ',L$'ä 00	ËPRTLEN;
FNSHUP  :ËPCIMä 0D848D8D00¥ ;:;; PRINT THE LENGTH OF A FILE;
PRTLEN  :ËFEND© ÍE01ËPHEXÍSTXTÊPHEX;:;:;; LISA APPEND COMMAND;APND    ÍSTXT¡ ÍSTXT+$01¡ ËFENDÍETXTÐSTXTÍETXT+$01ÐSTXT+$01ËLOAD¢ ÐSTXT+$01¢ ÐSTXTÊFEND;:;:; LISA SAVE COMMAND;:
SAVE    :Í#$40Ð$A33EË$A36D;
LOAD0   :;ËFBLKÄ0D‡LOD1	ËMOVNAM;:ËPCIMä 0D04
ß 'BLOAD'ä 00Ï#0	ËPRTPG2ËPCIMß ',A$'ä 00ËPRHX	ÊFNSHUP;:;:LOD1    ËPCIMä 0D07ß 'BAD FILENAME'ä 0D00;¥ ;:;:;:;:;:;:PRHX    ÍSTXT+$1981 LAZER SYSTEMS'ä 0Dß '    VERSION 2.5G -- '5;;ó IS64Kå '64K'ô å '48K'õ ;ä 0D0D0D00ÊCMND0;:;:;
LOAD    :;"; CHECK FOR SPECIAL "LOB" COMMAND;ÍPAG2+$2,YÄ#'B'‡LOAD0;; DO "L" FILE HERE;Í#$40Ð$A366Ð 
 a(„ÃÁÔÁÌÏÇ) Q                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       8   ¬ 	ËLOOKUP;;
STEP1   : ¢ ÐRTNL¢ ÐRTNH;; INIT EXECUTION AREA.;Î#8XQINIT  ÍINITBL-1,XÐXQT,Xœ 	†XQINIT;	ÍGOODOP”XQTIT;ËPRINT	ä 8D8D87ß "ILLEGAL OPCODE ENCOUNTERED"	ä 8D8D00Î#$FF° ÊMON;;
XQTIT;;; ZERO PAGE INSTRUCTION HERE;STEP5   Ï#1
Í(PCL),Y¬ Ï#0	ËLOOKUPÊSTEP1;;; BRANCH INSTRUCTION HERE;STEP2   Ï#1
Í(PCL),Y™ ÏPCH¬ …STEP4� ;STEP4   ÀPCLƒSTEP7Ÿ ;STEP7   ™ À#2ƒSTEP8Ÿ ;STEP),Y­ 	ËLOOKUPÊSTEP1;; IMMEDIATE INSTRUCTION HERE.; (OR ZERO PAGE);STEP3   ÍFMTSAVEÄ#$21†STEP5;; IMMEDIATE HERE;Ï#1
Í(PCL),YÄ#" "�STEP1ÍDISPMODE•STEP1Í#"""ËCOUT
Í(PCL),YËCOUTÍ#"""ËCOUTÊSTEP1H	ËLOOKUPËCROUT
ËINSTDSP;ÎCHBLNKLOOPÍ#" "ËCOUTž Å#31�BLNKLOOP;	ÍLENGTH‡STEP1Ï#$0
Í(PCL),YÁ#$1FÓ#$14Ä#4‡STEP2;	ÍLENGTHÄ#1‡STEP3;; THREE BYTE INSTRUCTION HERE;Ï#1
Í(PCL),Y¬ Ÿ 
Í(PCLDJ   © PCADJ2  ÍLENGTHPCADJ3  ÏPCH¬ 	…PCADJ4� PCADJ4  ÀPCLƒRTS2Ÿ RTS2    ¥ ;;;
STEP    : ;ËTSTBRKPTÍ#TRUEÐDOBRKËCROUTËCROUTÍ#$81
ÐFMTSAVEÎPCLÏPCH	ËPRNTYXÍ#"-"ËCOUTÍ#" "ËCOUTÎPCLÏPCPRADR4  � 	‚PRADR2	ËPRBYTE;PRADR5  ÍFORMATÄ#$E8
Í(PCL),Y	ƒPRADR4;RELADR  ËPCADJ3¬ ž 	†PRNTYXŸ ;
PRNTYX  : ± PRNTAX  ËPRBYTEPRNTX   ¯ 	ÊPRBYTE;PRBLNK  Î#2PRBL2   Í#" "PRBL3   ËCOUTœ †PRBL2¥ ;PCA#0Ï#5;PRMN2   ×RMNEMÖLMNEMÖ � †PRMN2À#$BFËCOUTœ †PRMN1	ËPRBLNK	ÏLENGTHÎ#6;PRADR1  Å#3	‡PRADR5;PRADR2  ×FORMAT	ƒPRADR3ÍCHAR1-1,XËCOUTÍCHAR2-1,X	‡PRADR3ËCOUT;PRADR3  œ 	†PRADR1¥ ;; � 	†MNNDX1¥ ;;å $FF,$FF,$FF;;INSTDSP ËINSDS1¡ 	ÍFORMAT
ÐFMTSAVE;;PRNTOP  Í(PCL),Y	ËPRBYTEÎ#1;PRNTBL  ËPRBL2	ÆLENGTHŸ 	ƒPRNTOPÎ#3Æ#4	ƒPRNTBL¢ ­ 
ÍMNEML,YÐLMNEM
ÍMNEMR,YÐRMNEM;PRMN1   Í¬ 	ÍFMT1,XËSCRN2	†GETFMT;ERR     Ï#$80	Í#FALSE	ÐGOODOPÍ#$0;GETFMT  ¬ 	ÍFMT2,X	ÐFORMATÁ#3	ÐLENGTH± Á#$8F¬ ± Ï#3Å#$8A	‡MNNDX3;MNNDX1  Ô 	ƒMNNDX3Ô ;MNNDX2  Ô Â#$20� 	†MNNDX2;Ÿ MNNDX3  FOR 48K LISA;SYMADR  å $78CHARSIZEå 8SYMSIZE å 10;SCRN2   ƒRTMSKZÔ Ô Ô Ô RTMSKZ  Á#$F¥ ;
INSDS1  : Í#TRUE	ÐGOODOPÎ#2ËPRBL2Î#0
Í(PCL,X);INSDS2  ­ Ô ƒIEVENÕ „ERRÄ#$A2‡ERRÁ#$87;IEVEN   Ô +1FOUND   Ü SYMTBL+2STATS   Ü FOUND+1DISPMODEÜ STATS+1ADRL    Ü DISPMODE+1ADRH    Ü ADRL+1;BRKPTNUMÜ ADRH+1BRKPT   Ü BRKPTNUM+1DOBRK   Ü BRKPT+8GOODOP  Ü DOBRK+1;;;INVERSE å $3F;; THE FOLLOWING LINE MUST BE; CHANGED TO $58A4L     Ü A3H+1A4H     Ü A4L+1A5L     Ü A4L+1A5H     Ü A5L+1ACC     Ü A5H+1XREG    Ü ACC+1YREG    Ü XREG+1STATUS  Ü YREG+1SPNT    Ü STATUS+1FMTSAVE Ü SPNT+1PRTLABELÜ FMTSAVE+1LOADDR  Ü PRTLABEL+1HIADDR  Ü LOADDR+1SYMTBL  Ü HIADDR   Ü $D6RTNL    Ü LMNEMRTNH    Ü RTNL+1RMNEM   Ü LMNEM+1FORMAT  Ü RMNEM+1LENGTH  Ü FORMAT+1PCL     Ü LENGTH+1PCH     Ü PCL+1XQT     Ü PCH+1A1L     Ü XQTA1H     Ü A1L+1A2L     Ü A1H+1A2H     Ü A2L+1A3L     Ü A2H+1A3H     Ü A3L+1C58ZMODE   Ù $FFC7BELL    Ù $FF3AKEYIN   Ù $FD0CKEYBRD  Ù $C000KEYSTRB Ù $C010;IN      Ù $200TRUE    Ù $1FALSE   Ù $0;;CH      Ü $24CV      Ü $25MODE    Ü $31INVFLAG Ü $32PROMPT  Ü $33YSAV    Ü $34;RUNMODE Ü $D9LMNEM Œ*ã ï "TRACE ROUTINES";Ú $4800š ÊDEBUG;FMT1    Ù $F962FMT2    Ù $F9A6CHAR1   Ù $F9B4CHAR2   Ù $F9BAMNEML   Ù $F9C0MNEMR   Ù $FA00CHRTBL  Ù $FFCCGETNUM  Ù $FFA7TOSUB   Ù $FFBEBL1     Ù $FE00GETLNZ  Ù $FD67HOME    Ù $F            
	 
	 
	                                                                                                                                                              ÍINPUTÄ#";"‡PASS2Ä#"*"‡PASS2;ËCNTOPCODËGETOPRNDÊPASS2;;;%; CNTOPCOD- COUNTS OPCODE OCCURANCES;
CNTOPCOD: ¡ ¯ ¡ ± ¡ ;	ÎSYMLENž 
Í#MNEMNC	ÐOPPNTR
Í/MNEMNCÐOPPNTR+1Ï#0	ÒOPCNTR;MNEMLOOPÍINPUT,".EL"ß ".FI"ä 00;;$; PASS TWO- DISCOVER ALL REFERENCES; OF SYMBOLS STORED WITHIN THE; SYMBOL TABLE;;P2INIT  Í#$0
ÐLINENUMÐLINENUM+1;
PASS2   : ;
ÉLINENUM
†PASS2.1ÉLINENUM+1;
PASS2.1 : ËGETLN
ÅSYMLEN2�PASS2;ß "ASL"ß "ADR"ß "EQU"ß "ORG"ß "OBJ"ß "EPZ"ß "STR"ß "DCM"ß "ASC"ß "ICL"ß "END"ß "LST"ß "NLS"ß "HEX"ß "BYT"ß "HBY"ß "PAU"ß "DFS"ß "DCI"ß "FLT"ß "PAG"ß "INV"ß "BLK"ß "DBY"ß "TTL"ß "SBC"ß "LET"ß ".IF"ß POP"ß "PPD"ß "STD"ß "STP"ß "LDR"ß "STO"ß "SET"ß "ADC"ß "AND"ß "ORA"ß "BIT"ß "CMP"ß "CPX"ß "CPY"ß "DEC"ß "EOR"ß "INC"ß "JMP"ß "JSR"ß "LDA"ß "LDX"ß "LDY"ß "STA"ß "STX"ß "STY"ß "XOR"ß "LSR"ß "ROR"ß "ROL"ß "DEX"ß "DEY"ß "INX"ß "INY"ß "NOP"ß "PHA"ß "PLA"ß "PHP"ß "PLP"ß "RTS"ß "RTI"ß "RSB"ß "RTN"ß "SEC"ß "SEI"ß "SED"ß "TAX"ß "TAY"ß "TSX"ß "TXA"ß "TXS"ß "TYA"ß "ADD"ß "CPR"ß "DCR"ß "INR"ß "SUB"ß "LDD"ß "MNC  ß "BGE"ß "BLT"ß "BMI"ß "BCC"ß "BCS"ß "BPL"ß "BNE"ß "BEQ"ß "BVS"ß "BVC"ß "BSB"ß "BNM"ß "BM1"ß "BNZ"ß "BIZ"ß "BIM"ß "BIP"ß "BIC"ß "BNC"ß "BRA"ß "BTR"ß "BFL"ß "BRK"ß "BKS"ß "CLV"ß "CLC"ß "CLD"ß "CLI"TAVAIL),YÍ#0Ÿ Ð(NXTAVAIL),YŸ Ð(NXTAVAIL),Y;; ADJUST NXTAVAIL SO THAT IT; POINTS TO THE NEXT AVAILABLE; POSITION;™ ÍNXTAVAILÀ#12ÐNXTAVAILƒPASS1ÉNXTAVAIL+1ÊPASS1;;;;!; VALID LISA 1.5 & 2.2 MNEMONICS;MNE"; CHARACTERS LONG FILL WITH
; SPACES.;LDLP0   Æ#8€LDLP1Í#" "Ð(NXTAVAIL),YŸ †LDLP0;; STORE LABEL DEFINITION LINE; NUMBER AND SET REFERENCE; POINTER TO NIL.;
LDLP1   : Ï#8
ÍLINENUMÐ(NXTAVAIL),YŸ ÍLINENUM+1Ð(NXÄ#";"‡PASS1Ä#"*"‡PASS1Ä#"^"‡PASS1;;; LABEL ENCOUNTERED HERE; STORE LABEL IN SYMBOL TABLE;;;Ï#0LDLOOP  ÍINPUT,YÄ#":"‡LDLP0Ä#" "‡LDLP0Ð(NXTAVAIL),YŸ 	ÆSYMLEN	�LDLOOP;!; IF LABEL IS LESS THAN "LENGTH;"ÐLINENUM»SET LINE NUMBER TO ZEROÐLINENUM+1¥ ;;; PASS ONE- DETERMINE WHERE; A SYMBOL IS DEFINED;;
PASS1   : ;
ÉLINENUM	†PASS1AÉLINENUM+1;
PASS1A  : ËGETLNÍINPUT; ; IS THERE A LABEL ON THIS LINE;Ä#" "‡PASS1 SYMBOL	; TABLE.;
Í#ENDPGMÐNXTAVAIL
Í/ENDPGMÐNXTAVAIL+1;; ; CLEAR ALL MEMORY FROM THE END ; OF THE PROGRAM THROUGH TO THE; HEAP.;Ï#0± Î#$72»CLEAR TO LOC $9100INITLOOPÐ(SYMTBL),YŸ †INITLOOPÉSYMTBL+1œ †INITLOOPEAR;  MEMORY.;Í#OPCOUNT	ÐSYMTBLÍ/OPCOUNTÐSYMTBL+1;;; SET UP POINTER TO HEAP.; THE HEAP IS USED TO HOLD ALL#; REFERENCES TO A PARTICULAR LABEL;Í#ENDPGM+$7000
ÐNXTHEAPÍ/ENDPGM+$7000ÐNXTHEAP+1;;; SET UP POINT FOR THEEN  å LENGTHSYMLEN2 å LENGTH+2SYMLEN4 å LENGTH+4SYMLEN5 å LENGTH+5;;;;;;;;;; INIT- INITIALIZES POINTERS;
INIT    : ;;;  INITIALIZE SYMTBL TO POINT;  AT THE BEGINNING OF THE;  VARIABLE SPACE.;  THIS WILL BE USED TO CL PNTR1+2COUNTER Ü PNTR2+2;;;;;;; MONITOR EQUATES.;INPUT   Ù $200;GETLN   Ù $FD6FCOUT    Ù $FDEDHEXOUT  Ù $FDDA;;;;;ÊINITÊPASS1	ÊP2INITÊPRTSYMBL;; ; SYMLEN- LENGTH OF LISA SYMBOL;LENGTH  Ù 8;SYML U(ã ï "LISA XREF"Ú $1800;SYMTBL  Ü $0HEAP    Ü SYMTBL+2NXTAVAILÜ HEAP+2NXTHEAP Ü NXTAVAIL+2LINENUM Ü NXTHEAP+2OPPNTR  Ü LINENUM+2OPCNTR  Ü OPPNTR+2DIGIT   Ü OPCNTR+2LEAD0   Ü DIGIT+1NUM     Ü LEAD0+1PNTR1   Ü NUM+2PNTR2   Ü            
	  
	 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Í8DË$FDEDÍ00	ÐSYMCNT
LBL8    : ;;;LBL3    ™ ÍPNTR1À#10ÐPNTR1ƒLBL6ÉPNTR1+$1LBL6    Ï00ÊLBL2;LBL4    ¥ LLLL    Ù $00â á ÿ;"                                                                                    ÐPNTR1+$1
LBL2    : ;Í(PNTR1),Y‡LBL4Ä#'#'‡LBL3Í#$A0Ë$FDEDË$FDEDLBL5    Í(PNTR1),YÂ80Ë$FDEDŸ Æ#8�LBL5;Í#$A0Ë$FDEDŸ Í(PNTR1),YË$FDDA� Í(PNTR1),YË$FDDA;;	ÉSYMCNT	ÍSYMCNTÄ#5�LBL8;	ÄENDSYM†LBL7ÍPNTR2+$1ÄENDSYM+$1‡LOOPP
LBL7    : ™ ÍPNTR1À#10ÐPNTR1ƒLOOP4ÉPNTR1+$1;
LOOP4   : ÍPNTR1	ÄENDSYMÍPNTR1+$1ðENDSYM+$1�LOOP1;;; PRINT THE SYMBOL TABLE HERE.;Ï00ÍSYMTÐPNTR1
ÍSYMT+$1NTR2) HERE.;	ËEXCHNG;ÊLOOP2;;
LBL1    : ;; SORT BY ADDRESS HERE;	ËCMPADR�LOOP2	ËEXCHNG;;;
LOOP2   : ™ ÍPNTR2À#10ÐPNTR2ƒLOOP3ÉPNTR2+$1
LOOP3   : ÍPNTR2	ÄENDSYMÍPNTR2+$1ðENDSYM+$1�LOOPPÍPNTR20;MSG2    ä 8D8Dß "SYMBOL TABLE SORTED"ß " BY ADDRESS"	ä 8D8D00;;;
SORTIT  : ÍSYMTÐPNTR1
ÍSYMT+$1ÐPNTR1+$1;LOOP1   ÍPNTR1ÐPNTR2ÍPNTR1+$1ÐPNTR2+$1;;
LOOPP   : ÍFLAG”LBL1	ËCMPALF�LOOP2;; (PNTR1) > (P OUTPUT.;Ï00SLP2    ÍMSG2,Y‡SLP2XË$FDEDŸ ÊSLP2;
SLP2X   : Í00	ÐSYMCNTÍ01ÐFLAG	ËSORTIT;;Í#$8DË$FDEDË$FDED Ê$E003»WARMSTART INTO LISA 2.0;MSG1    ä 8Dß "SYMBOL TABLE SORTED"ß " ALPHABETICALLY"	ä 8D8D0 CONTAIN; THE BEGINNING AND ENDING; ADDRESSES OF THE ARRAY TO BE
; SORTED.;;!; SORT ALPHABETICALLY AND OUTPUT;Ï00SLP1    ÍMSG1,Y‡SLP1XË$FDEDŸ ÊSLP1;
SLP1X   : Í00	ÐSYMCNTÍ00ÐFLAG	ËSORTIT;; SORT BY ADDRESS AND ;;;; THE GOOD OLD BUBBLE SORT.; I USED THIS ONE BECAUSE ; IT IS SHORT, AND I AM PRESSED; FOR SPACE.;; FOR BETTER PERFORMANCE, USE; QUICKSORT.;;
SORT    : ;#; FIRST - FIND END OF SYMBOL TABLE;	ËFNDEND;; NOW SYMT AND ENDSYMG THE; ADDRESS IN ENDSYM.;FNDEND  Ï00ÍSYMT	ÐENDSYM
ÍSYMT+$1ÐENDSYM+$1;FND1    Í(ENDSYM),Y‡FND2	ÍENDSYM™ À#10	ÐENDSYMƒFND1ÉENDSYM+$1ÊFND1;FND2    © 	ÍENDSYMð#10	ÐENDSYMÍENDSYM+$1ð00ÐENDSYM+$1¥ Ÿ œ ‚CMPA2Í(PNTR1),Yð(PNTR2),Y‡CMPA1;¥ CMPA2   © ¥ ;;; COMPARE ADDRESSES.;CMPADR  Ï#8Í(PNTR1),YÄ(PNTR2),YŸ Í(PNTR1),Yð(PNTR2),Y¥ ;;;;;!; THE FOLLOWING FINDS THE END OF ; THE SYMBOL TABLE, LEAVIN THE FOLLOWING SECTION EXCHANGES; THE TWO SYMBOL TABLE ENTRIES; POINTED AT BY PNTR1 & PNTR2;;EXCHNG  Ï#9EX1     Í(PNTR1),Y¡ Í(PNTR2),YÐ(PNTR1),Y¢ Ð(PNTR2),Y� …EX1¥ ;;; CMP LABELS;CMPALF  Ï#$FFÎ#8© CMPA1   §ã ; SYMBOL TABLE SORT ROUTINE;; AUTHOR:RANDY HYDE; APPLE II COMPUTER; AUGUST 1979;;;SYMT    Ü $94PNTR1   Ü SYMT+$2PNTR2   Ü PNTR1+$2FLAG    Ü PNTR2+$2ENDSYM  Ü FLAG+$1SYMCNT  Ü ENDSYM+$2;;;ÊSORT»JMP VECTOR;;";            
	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Â€   
­                                                                                                                                                                                                                                                       �ºç(4);"CLOSE ";NAME$ 'šºç(4);"PR#1" 7¤ŒPRTSYMBOLS =®º N¸ºç(4);"PR#0" TÂ€   
RNAME$ v6ºç(4);"OPEN ";NAME$ Ž@ºç(4);"READ ";NAME$ –E„A$  J¥«400 ­TŒPASSTWO Æ�ºç(4);"CLOSE ";NAME$ ×šºç(4);"PR#1" ç¤ŒPRTSYMBOLS í®º þ¸ºç(4);"PR#0" ." 
‚ º  
Œ º"ENTER FILENAME:"; +
– „NAME$ C
  ºç(4);"OPEN ";NAME$ [
ª ºç(4);"READ ";NAME$ r
¯ „A$:² REMOVE "INS" |
´ ŒINIT †
¾ ¥«300 •
È ŒFIRSTPASS ®
,ºç(4);"CLOSE ";NAME$ Æ
6ºç(4);"OPEN ";NAME$ Þ
@ºç(4);"READ ";NAME$ æ
E„A$ ð
J¥«400 ý
TŒPASSTWO 80, 1981     ,	< ² *                       * L	F ² * AUTHOR:RANDALL HYDE   * l	P ² *                       * Œ	Z ² ************************* ’	c ² ¿	d º"THIS PROGRAM ASSUMES YOU HAVE CREATED" æ	n º"A LISA TEXT-TYPE FILE USING THE" 
x º"LISA W)RITE COMMANDV  —  ªINITÐ6144 * ªFIRSTPASSÐ6147 < ªPASSTWOÐ6150 Q ªPRTSYMBOLSÐ6153 q
 ºç(4);"BLOAD XREF.OBJ V2.0" ‘ ² ************************* ± ² * LISA CROSS REFERENCER * Ñ ² *                       * ñ( ² * (C) LAZER MICROSYSTEMS* 	2 ² *     19            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Ì­ Í²ªðL¤Ÿ­É�Ð [§L•ŸLÄ¦_ª¬_ª ^¦�©9	©ð©LÒ¦ÀÐ„3© 9	©ða •  ¤¡ð
�0L  jLY  “¡ð™uªÈÀ<�ó “¡Ðû(Ð¬_ª©9	©ð ÐË­“ªÉ ð­uªÉ ÐK¬_ª©À9	©ð?L   <© ™tªˆÐú`�uª©9	©ð' ¹¡°¨Ðà°¬_ª©9	©ðà°Î�ŠÐ©LÒ¦LÄ¦© �eª�tª�fª�lª�mª Ü¿­]ª ¤¡ÐÉ�Ð÷           "; CHARACTERS LONG FILL WITH
; SPACES.;LDLP0   Æ#8€LDLP1Í#" "Ð(NXTAVAIL),YŸ †LDLP0;; STORE LABEL DEFINITION LINE; NUMBER AND SET REFERENCE; POINTER TO NIL.;
LDLP1   : Ï#8
ÍLINENUMÐ(NXTAVAIL),YŸ ÍLINEN  ÌÂÌ±¸             ÌÉÎÅÓº      ¥�¥¥	�¦©�… ©…¢ ½1ðN íýèÐõ��ÓÙÍÂÏÌ  ÄÅÆÉÎÅÄ  ­­­­­­­­­­­­­­­­­­­­ ÒÅÆÅÒÅÎÃÅÓ ­­­­­­­­­­­­­­­­­­­� ¥ H¥H Ûh…h… ¥ i… �æ¥ Å¥å�Ü D`Ä#" "‡LDLP0Ð(NXTAVAIL),YŸ 	ÆSYMLEN	�LDLOOP;!; IF LABEL IS LESS THAN "LENGTH…È± … 
æ¥É
�©� íý© …ŠH¢©  íýÊÐøhª©  íýÈ± HÈ± ð
…h…   Lúhh¨hªh`HŠH˜H¢ ½Vð! íýèÐõ���  ÏÐÃÏÄÅ ÆÒÅÑÕÅÎÃÉÅÓº�� ¢ †©™…©…  ±ðG íýÈÀ�ô©º íý©  íý½¡…½… 
æ¥É�© …©� íýL»©  íýè¥i…�¸æL}h¨hªh`©‘…… ©…… ‚¥i…�æ¢ ½ú�‘èà�õL  é…°Æhªh¨h`HŠH˜H¢†©°…¥ÝR¥ýW�…¥ýR…æÐç¥à ðÉ°ð…LE$0©  íýÈÊÇh¨hªh`
dè   '¬ˆˆ±H±‘h‘ˆó` ÿ®8ÈÊ0±ñðö`8`HŠH˜H©‘…©…¥…¥… o� \¥i…�æ¥Å¥å�ã¥ÅÐ¥Åð×¥i…�æ¥Å¥å�ºh¨hªh`HŠH˜H©� íý  ±  íýÈÀ�ö©  íý© …± É�ðÉ ðÉ©ðèL‹`½  /ðÉÁ�ÉÇ°èL`½  /ÐèL"`É°�ûÉº°,>`Hh` H˜H  ½ É«ð7É­ð3Éªð/É¯ð+ÉÞð'Éüð#É¦ðÉ ðÉ¬ðÉ©ðÉ�ðÉ£ðÉ½ð™ ÈèÐÂŠH© ™ ÈÀ�ø¢   ©‘… ©…½ Ñ Ð	èÈÀ�óLÆ¢   ¥ i… �æ¥ Å¥å�×L ± ð± Hˆ± … h… ± Ðï¥‘ ¥ˆ‘   ¥‘È¥	‘È© ‘È‘8¥æ	 oýì�ò­ É»ðëÉªðç  gLùHŠH˜H®è©™…
©…  „½ Ñ
ÐèÈÀ�ó¦þ¡ÐþLa®è  æ¥
i…
�æ±
ÐÏh¨hªh`ì°L®½ É¢ÐLÉ§ÐL /ÐL½ É£Ðè½ L¡É¨Ðè½ É¢ÐèèèLùÉ§ÐèèèLùÉ¤Ðè LùÉ¡Ðè "Lù /Ð "LùÉªÐèLùÉ¥Ðè "LùÉ¾ðÉ¼ÐèèLù ?½ ÐÈÁÐÌÁÐÈÐÐÌÐÒÔÓÒÔÉÒÓÂÒÔÎÓÅÃÓÅÉÓÅÄÔÁØÔÁÙÔÓØÔØÁÔØÓÔÙÁÁÄÄÃÐÒÄÃÒÉÎÒÓÕÂÌÄÄÐÏÐÐÐÄÓÔÄÓÔÐÌÄÒÓÔÏÓÅÔÁÄÃÁÎÄÏÒÁÂÉÔÃÍÐÃÐØÃÐÙÄÅÃÅÏÒÉÎÃÊÍÐÊÓÒÌÄÁÌÄØÌÄÙÓÔÁÓÔØÓÔÙØÏÒÌÓÒÒÏÒÒÏÌÁÓÌÁÄÒÅÑÕÏÒÇÏÂÊÅÐÚÓÔÒÄÃÍÁÓÃÉÃÌÅÎÄÌÓÔÎÌÓÈÅØÂÙÔÈÂÙÐÁÕÄÆÓÄÃÉÆÌÔÐÁÇÉÎÖÂÌËÄÂÙÔÔÌÓÂÃÌÅÔ®ÉÆ®ÅÌ®ÆÉ © ……	æÐ ðLL<LóLÐ
©¡… ©…©‘…©�…©‘…©…  ˜¢r‘ ÈÐûæÊÐö……	`æÐæ	 oý­ É ððÉ»ðìÉªðèÉÞðä  ¹ ÉºðÉ ð‘ÈÌ�íÀ°© ‘ÈÐõ ¥‘È¥	‘© È‘È‘¥i…�¨æL<ÂÇÅÂÌÔÂÍÉÂÃÃÂÃÓÂÐÌÂÎÅÂÅÑÂÖÓÂÖÃÂÓÂÂÎÍÂÍ±ÂÎÚÂÉÚÂÉÍÂÉÐÂÉÃÂÎÃÂÒÁÂÔÒÂÆÌÂÒËÂËÓÃÌÖÃÌÃÃÌÄÃÌÉÄÅØÄÅÙÉÎØÉÎÙÎÏÐ            
	                                                                                                                                                                                                                                  GETLBLÄ#'='	‡GETLBL	†BADLBL;ISITEND ÍPAG2,YÄ#' ' 
‡FLSLBLÄ#':'	†BADLBL;FLSLBL  ± ¬ Í#' 'FLSHL0  ÐPG31,Xž Å#20»Anything > 9	�FLSHL0;FLSHL1  ÍPAG2,YÄ#':'	†GETMNE
ÐPG31+$8Í#$D
ÐPG31+$9Í#$AÐPAG3	ƒBADLBL	ÐPG31+1
ÍPAG2+$2Ä#' '‡>0Ä#':'	†BADLBL;^0      Ï#2	†FLSLBL;; HANDLE NORMAL LABEL;
GETLBL  :	ÍPAG2,YËTSTL»Convert L/C to U/C ;TSTEND  Ä#':'	‡FLSLBLÄ#' '	‡FLSLBL	ÐPG31,YŸ Æ#8
€ISITENDËTSDM	„BL;NOLABEL ÊGETMNEENDEDIT ¥ ;;COMMENT Ï#0^0      ÍPAG2,Y	ÐPG31,YŸ Ä0D†<0;Ÿ ÒPAG3ËFLSH¥ ;;BADLBL  ËERORå 'BAD CHARACTER IN LABEL',0ÊGETL;;;; HANDLE LOCAL LABEL;DOLCLLBLÐPG31
ÍPAG2+$1ËTSTD ';', '*', ' ', '~',; an alphabetic letter, or the#; terminating character (^E or ^@);ËRDLNÏ00ÍPAG2Ä#5»^E
‡ENDEDITÄ#0»^@
‡ENDEDITÄ#';'
‡COMMENTÄ#'*'
‡COMMENTÄ#'^'‡DOLCLLBLÄ#' '
‡NOLABELËTSTL	„GETLBL	ƒBADL$DËPUTC© ¥ ;;; NORMAL GETLINE ENTRY;;;
GETLT   :Í#$0ÐPAG3Î#$60Í#' 'GETLT1  ÐPG31,Xœ 	…GETLT1ËPRLN;; Read a line of text from the"; keyboard.  Allowable characters!; for the first character on the ; line are:OLLOWING IN THE EVENT; A FILE IS BEGIN EXEC'D INTO	; MEMORY;;; INIT COUT VECTORS TO $FDF0;
ÍCONSLOT	ËSETVID
ÍCONSLOT	ËSETKBD;!; NOW, GET ANOTHER LINE FROM THE; KEYBOARD.;ËGETLT; ; AND THEN RESTORE DOS POINTERS;ËDSKÍ#STKÍ0DËPUTCËPUTC¥ ;:;:;: GETL-GETS A LINE;: FROM THE KEYBRD ;: AND CHECKS FOR;: SYNTAX, IF OKAY;: LINE IS ENTERED;: INTO TEXTFILE.;:;:    PRINT LINE #;:;:;:  GET LINE AND;:  CHECK SYNTAX.;:
GETL    :; ; DO THE F(POSN),Y;:© ÀPOSNÐPOSNƒFLS3ÉPOSN+$01FLS3    ¥ ;:;:;:;: EROR- PRINTS AN;: ERROR MESSAGE;:EROR    Í#$5ËPSPC± ‡>0 ËPSPC ; ^0      Í#'^' ËPUTCËPCIM	ä 0D0D07ß '**ERROR:'ä 2000;:ËSTKAËOTAIËS;:;:;: FLSH-TRANSFERS;: PAGE 3 TO TEXT-	;: FILE.;:FLSH    ÏPAG3ÍPOSNÄCSAVE£ ™ 
ÍPOSN+$1À#2¤ ðCSAVE+$1�FLS1;ËERORß 'MEMORY FULL'ä 00Í05ÐPAG2¥ ;;FLS1    ÍPAG3,YÐ(POSN),Y� †FLS1;:ÍPAG3ÐÙ INIT+$3PUTC    Ù PSPC+$3PINT    Ù PUTC+$3PCIA    Ù PINT+$3OTAI    Ù PCIA+$3STKA    Ù OTAI+$3SSTK    Ù STKA+$3;:;SETVID  Ù $FE95SETKBD  Ù $FE8BDSK     Ù $A851;:;:;;;;;;;ÊGETLT	ÊMLTPLYÊDIVSNÊFINDÊSLUPEL  Ù PRLN+$3SYMEND  Ù $6027CONSLOT Ù $602Cõ ;;:;:	ó HAS64K;RDLN    Ù $E880;ô ;RDLN    Ù $6880;õ ;;PCIM    Ù RDLN+$3MOVR    Ù PCIM+$3MOVL    Ù MOVR+$3TSTD    Ù MOVL+$3CVDH    Ù TSTD+$3INIT    Ù CVDH+$3PSPC    G31    Ù $9582LCLCNT  Ù $94F0 ô PAG2    Ù $9800PAG3    Ù $9881PG31    Ù $9882LCLCNT  Ù $5FF0 õ ;;	ó HAS64KMNTBL   Ù $E01DPRLN    Ù $E015BLKDEL  Ù PRLN+$3SYMEND  Ù $E027CONSLOT Ù $E02Cô MNTBL   Ù $601DPRLN    Ù $6015BLKD;SADR    Ü $91SYMT    Ü $94ASAV    Ü $96EYET    Ü $97OP1     Ü $A8RESULT  Ü $A5;ENDSYM  Ü $B4LOCSAV  Ü $B2LOCC    Ü $99DIR     Ü $B6SYMCNT  Ü $B7SYMSAV  Ü $B8;CSAVE   Ü $FE;;:	ó HAS64KPAG2    Ù $9500PAG3    Ù $9581P  Ü ETXT+$2TPOS    Ü POSN+$2LPTR    Ü TPOSCPOS    Ü TPOS+$2HMEM    Ü CPOS+$2LNUM    Ü HMEM+$2FRST    Ü LNUM+$2LAST    Ü FRST+$2;MLUP    Ü $72YSAV    Ü MLUP+$2YSV2    Ü YSAV+$1DELM    Ü YSV2+$1MCNT    Ü DELM+$2OPRND   Ü MCNT+$1 -Mã ï "LISA P3.L";;TRUE    Ù 1FALSE   Ù 0;HAS64K  Ù TRUE;;	ó HAS64K;Ú $D000;ô ;Ú $8800;õ ;Û $800;:
;: P3.TXT;:ADDR    Ü $E0BDDR    Ü ADDR+$2CDDR    Ü BDDR+$2STXT    Ü CDDR+$2ETXT    Ü STXT+$2POSN              
	 	 
	 
	 						
											 




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ¡ ± ¡ ;
LIST0   : ÍPCÐP`AUXÍPC+1
ÐPCAUX+1	ËINSDS1	ËSETFMT
ËINSTDSPËPCADJÐPCÒPC+1;Í#CRËCOUT
ÍSTOPVALÄPCÍSTOPVAL+1ðPC+1€LIST0;¢ ­ ¢ ¥ ;
GETHEX  : ;ÉPC
†GETHEX1ÉPC+1;G           TABLE;Í(SYMADRS),YÓBITSET,XÐ(SYMADRS),Y;; PRINT THE LABEL;Í#CRËCOUTÍ#"L"ËCOUTÍPC+1	ËPRBYTEÍPC	ËPRBYTEÍ#":"ËCOUT¢ ­ ¢ ¬ ¢ © ¥ ;TBLCLC  ¢ ­ ¢ ¬ ¢ ™ ¥ ;;;;;;
LIST    : ;ÕSYMADRSÕ œ 
†TSTLBL0;Ô Ô Ô Ô Ô ¬ Ï#0™ 
ÍSYMADRS	À#ARRAY
ÐSYMADRSÍSYMADRS+1	À/ARRAYÐSYMADRS+1;ÍBITSET,XÁ(SYMADRS),Y;¥ ;;;
TSTLBL  : ¡ ¯ ¡ ± ¡ ;	ËCHKTBL	‡TBLCLC;;; CLEAR BIT IN ;LBLTST1 ÍSTOPVALÄPCÍSTOPVAL+1ðPC+1�*+5ÊPRTINST0;¢ ­ ¢ ¥ ;;;;;;;; CHECK CURRENT ADDRESS TO#; SEE IF A LABEL IS REQUIRED HERE.;;
CHKTBL  : ÍPC
ÐSYMADRSÍPC+1ÐSYMADRS+1Î#3TSTLBL0 ÔSYMADRS+1
ÁÍÅÔÅÒ© ÔÏ ÃÏÎÔÉÎÕÅ hªhhhhLdMÍPCAUXÐPC
ÍPCAUX+1ÐPC+1;	ËCHKTBL	•LBLTSTÍ#CRËCOUTÍ#"L"ËCOUT
ÍPCAUX+1	ËPRBYTEÍPCAUX	ËPRBYTE	ËPRTEQUÍ#"*"ËCOUTÍ#"-"ËCOUTÍ#"$"ËCOUT© ÍTEMPðPCAUX	ËPRBYTE	ÊLBLTSTåhªh` +L��ÂÒËÐÔ £±º ­H…2¥÷ Úý¥ö Úý©ÿ…2 +L��ÂÒËÐÔ £²º ­H…2¥ù Úý¥ø Úý©ÿ…2 +L��ÂÒËÐÔ £³º ­H…2¥û Úý¥ú Úý©ÿ…2 +L��ÂÒËÐÔ £´º ­H…2¥ý Úý¥ü Úý©ÿ…2 +L��¨ÚÅÒÏ ÑÕÉÔÓ©��� `¥þÐ`© …þŠH¢ ¥ÚÕöÐ¥ÛÕ÷ð	èèà�îhª` +L��ÂÒËÐÔ ÅÎÃÏÕÎÔÅÒÅÄ ÁÔ ¤ ¥Û Úý¥Ú Úý +L�ÈÉÔ ÓÐÁÃÅ ¨ÏÒ ÐÁÒxMÉÄð�LxM¢ÿš +NLÖLÉÁÐ¥òI)…ò +N©…% ÝN`ÉÃÐ©…% ÝN` O +L�×ÈÉÃÈ ÂÒË ÐÔ ÄÏ ÙÏÕ ×ÉÓÈ ÔÏ ÃÈÁÎÇÅ¿  ý íýÉ°�ÎðGÉµ°È +L�ÅÎÔÅÒ ÁÄÄÒÅÓÓ ÏÆ ÂÒËÐÔ £  íý)8é…õ©º íý oý   dL §ÿõ¦õ¥>•ö¥?•÷©…% ÝN`HŠH¢ ½ �P½ �Q½ �R½ �SèÐåhªh`HŠH¢ ½P� ½Q� ½R� ½S� èÐMLÖLÉÐÐ xMLÖLÉÑÐ É�ÐLÖL :ÿLÖL +L�ÁÄÄÒÅÓÓ ÏÆ ÒÏÕÔÉÎÅ ÔÏ ÔÒÁÃÅº  oý   dL §ÿ¥>…Ú¥?…Û©…ò úH­ Àø�ÀÉ Ð­ Àû�ÀÉ Ððã xMLdM ¹N Xü +L��  Á© ÔÏÇÇÌÅ ÄÉÓÐÌÁÙ ÍÏÄÅ�  Â© ÓÅÔ ÂÒÅÁË ÐÏÉÎÔ�  Ã© ÒÅÔÕÒÎ�  Ä© ÑÕÉÔ�  ¤© ÁÐÐÌÅ ÍÏÎÉÔÏÒ ÃÏÍÍÁÎÄ�º  oý   dLÉ¤ÐÈ LL+NÉÁ°LiH¥òðhLíýh` ¾ÿ¤4 §ÿ„4 ˆ0ÙÌÿÐøÀÐè¥1  Æ4  þ`H˜HŠHº½…ó½…ô ±óð íýæóÐõæôÐñæóÐæô¥ó�¥ô�hªh¨h(`¹ É ÐÈÐö` Xü +L��ÌÁÚÅÒ ÓÙÓÔÅÍ§Ó�ÉÎÔÅÒÁÃÔÉÖÅ�ÄÅÂÕÇÇÅÒ��¨Ã© ±¹¸°¬ ÌÁÚÅÒ ÓÙÓÔÅÍ§Ó  ÖÅÒÓÉÏÎ ±®°��� © …å…æ…ç…è¢•öÊû© …Ù ÛK©©…3 gý Çÿ   dLÉ¤ÐÈ LLÖLÉÔÐ ñ 	&ñ�½K þKˆÊò©  þKˆø©ÿ…2`ÁØÙÐÓÃÚÉÄ€€ÖÎ ±Ú îH…Ú˜8�LfJ TK8�LhJêêL8KL'K¥èH¥å¦æ¤ç(`…å†æ„çh…èº†éØ`HŠH˜H¥òðc¥êð_É!ð[†ì„í  „î­H…ï  ±îðH¬H±îÅìÐ0È±îÅíÐ)  ±îÉ#ð!­H…2±î	€ þKÈÌH�ó©…ð©ÿ…2h¨hªh(`¥îmH…î�æïL‚K© …ðh¨hªh(`©�Ð ÛK ØH  ©­ÐHJJJJ öKh)	°Éº�eÉLð|ÉlðyÉ@ðU)IÉð±Ú™Ü ˆø IKLÜ ¥òÐ/©…ò ÛK ÛK©�…ê¤Û¦Ú ØH©­ þK©  þK¦Ú¤Û cK ÛK dHLÖL H ÛK “JLÖLh…èh…Úh…Û¥Ù îH„Û� ìHª˜HŠH ±Úªˆ±Ú†Û…Ú°ó¥×H¥ÖH ÛKH˜H©  þKh¨h©å…à© …á¢û©  þK½J þK©½ þKµê ëKàûÐ)©  þK©¢ þK¥åÉ€�É °©¢ þK©  þKLêJ þK©¢ þKè0»©  þK­H…2¢¥è…O©…þ ÛK ÛK©�…ê¦Ú¤Û ØH©­ þK©  þK¦Ú¤Û cK ÛK dH¦$©  þKèà�ö¥Ùðl  ±Ú)IÉðF¥ÙÉð ±ÚªÈ±Ú¨ cKL¥I¥êÉ!Ð ±ÚÉ �=¥òð9©¢ þK±Ú þK©¢ þKL¥I ±Úª   cKL¥I ±Ú¤ÛªˆeÚ�Èi�Èª cKh…Öh…×¢½@K•ÜÊÐø¥ÿÐ) +L��‡ÉÌÌÅÇÁÌ ÏÐÃÏÄÅ ÅÎÃÏÕÎÔÅÒÅÄ�� ¢ÿšLÖL¡Úð9)É¡Ú(Ð  T¤ÙÉ ðyÉ`ð HðØLoL?x
�JJJJ)`©…ÿ¢ âH¢ ¡Ú¨J�	j°É¢ð)‡Jª½bù HÐ €© …ÿ© ª½¦ù…Ø)…Ù˜)�ª˜ àŠðJ�JJ	 ˆÐúÈˆÐò`ÿÿÿ HH¥Ø…ê±Ú ëK¢ âHÄÙÈ�ñ¢À�òh¨¹Àù…Ö¹ ú…×©  ×&Ö*ˆÐøi¿ þKÊÐì àH¤Ù¢àðØ�½³ù þK½¹ùð þKÊÐç`ˆ0ç ëK¥ØÉè±Ú�ò îHªèÐÈ˜ ëKŠLëK¢©  þKÊÐø`8¥Ù¤ÛªˆeÚ�È` Ÿ            
	                                                                                                                                                                                                                                    AT (SOURCE,SOURCE+$1).";          IF THE TWO STRINGS ARE#;          EQUAL THEN THE ACC WILL ;          BE RETURNED EQUAL TO;          ZERO. IF THE STRING#;          POINTED AT BY SOURCE IS#;          GREATER THAN THE STRING#;          POI THE LEFT TWO BITS;×LSDPÖMSDP;; ADD IN PREVIOUS VALUE.;™ ÀLSDPÐLSDP¯ ÀMSDPÐMSDP¥ ;;; ; STRCOM - STRING COMPARE.  THE ;          STRING POINTED TO BY;          (DEST,DEST+$1) IS";          COMPARED TO THE STRING";P);          CONTAIN EITHER THE#;          PREVIOUS RANDOM NUMBER,;          OR A 16-BIT SEED.!;          UPON EXIT (MSDP,LSDP)!;          CONTAIN THE RANDOM #.#;          A,X REGISTARS DESTROYED;RANDOM  ÍLSDPÎMSDP;
RND2    :; SHIFT TO;TSTHEX  Á#$7FÄ'0�TSTDC
Ä#'9'+$1�TSTDSÄ'A�TSTDCÄ'G€TSTDC;TSTDS   © ¥ ;TSTDC   ™ ¥ ;;;; RANDOM - GENERATES A PSEUDO-#;          RANDOM NUMBER EACH TIME;          IT IS CALLED. ;          ON ENTRY (MSDP,LSDCUMULATOR IS CLEARED.;TSTDEC  Á#$7FÄ'0�TSTD
Ä#'9'+$1€TSTD© ¥ TSTD    ™ ¥ ;;"; TSTHEX - TESTS THE CHARACTER IN!; THE ACCUMULATOR AND DETERMINES; IF IT IS A VALID HEX DIGIT."; IF SO THE CARRY IS SET, ELSE IT; IS CLEARED.;CHARACTER IN!; THE ACCUMULATOR AND DETERMINES!; IF IT IS A DECIMAL DIGIT ('0'- ; '9').  ON RETURN THE CARRY IS!; CLEAR IF THE CHARACTER WAS NOT"; A DECIMAL DIGIT, THE CARRY WILL ; BE SET IF THE CHARACTER WAS A"; DECIMAL DIGIT.  H.O. BIT OF THE; ACSR1;ÔMSDPÖLSDPÊLLSR;
LLSR1   :¥ ;;;#; LLSL - LONG LOGICAL SHIFT RIGHT.;#;        SHIFTS (MSDP,LSDP) X BITS;        TO THE LEFT.;
LLSL    :œ ‚LLSL1×LSDPÖMSDPÊLLSL;LLSL1   ¥ ;;;;"; TSTDEC - TESTS THE ;#; LLSR - LONG LOGICAL SHIFT RIGHT.";        IDENTICAL TO LASR EXCEPT";        THAT A ZERO GETS SHIFTED ;        INTO BIT 16 INSTEAD OF!;        COPYING BIT 16 INTO BIT;        16.;;
LLSR    :;!; NO NEED TO SAVE 16TH BIT HERE!;œ ‚LL BIT IS SET;×MSDP£ ÕMSDP;;
LASR1   :;; SEE IF DONE.;œ ‚LASR2;; RESTORE 16TH BIT IN CARRY;¤ £ ;; PERFORM ASR.;ÕMSDPÕLSDP;; REPEAT UNTIL THRU;ÊLASR1;
LASR2   :;; FIX THE STACK.;¤ ¥ ;;2   :¤ ¥ ;;;; ; LASR - LONG ARITHIMETIC SHIFT;        RIGHT.;"; SIMILAR TO LASL EXCEPT BITS ARE; SHIFTED TO THE RIGHT.; THE FIRST BIT ENDS UP IN THE; CARRY AND BIT 16 GETS COPIED; INTO ITSELF.;
LASR    :;; DETERMINE IF 16THLASL    :;!; DETERMINE WHETHER FIRST BIT IS; ON OR OFF.;ÔLSDP£ ÖLSDP;
LASL1   :;; SEE IF THRU.;œ ‚LASL2;;  GET COPY OF FIRST BIT.;¤ £ ;; PERFORM ASL.;ÖLSDPÖMSDP;; REPEAT UNTIL THRU;ÊLASL1;
LASL TO!; THE LEFT, WHERE X IS PASSED IN; THE X-REGISTAR.  NO CHECK IS; MADE AS TO WHETHER OR NOT X; IS GREATER THAN 16. IF X IS; 0 NO SHIFT WILL TAKE PLACE.#; THE 16TH BIT IS SHIFTED INTO THE; CARRY AND THE FIRST BIT IS; COPIED INTO ITSELF.;
 REQUIRED HERE. ; (YOU MAY REASSIGN TO FIT YOUR
;  NEEDS);LSDP    Ü $0MSDP    Ü LSDP+$1SOURCE  Ü MSDP+$1DEST    Ü SOURCE+$2;;!; LASL -  LONG ARITHIMETIC SHIFT;         LEFT.;; SHIFTS CONTENTS OF MEMORY"; LOCATIONS (MSDP,LSDP) X BITSR SYSTEMS.         *; * ALL RIGHTS RELEASED.   *; *                        *; * AUTHOR: RANDY HYDE     *; * APPLE II COMPUTER.     *; * JULY 1979              *; *                        *; **************************;;;;; ZPAGE VARS ‹;; **************************; *                        *; *   UTILITIES.......     *; *                        *; * SEVERAL MISC USEFUL    *; * ROUTINES.              *; *                        *; * (C) 1979 BY:           *; * LAZE            
	 


	

                                                                                                                                                                                                              E IF THRUŽINS3;; ; NOW TRANSFER TEXT FROM PAGE 2; TO MAIN MEMORY;INS2    ½	@R3¼	@R5³R6�INS2½	@R3“INS4;;;; ALL THRU INSERTING HERE.; BRING DOWN THE TEXT PLACED; IN HIGH MEMORY;INS3    ¾
R6,HIMEM¼R3½R2INS5  ŽINS4’INS4¸	@R5»	@R4“INS1;; ; NOW, ACCEPT TEXT AND STORE IN#; MEMORY UNTIL A RETURN IS PRESSED"; AS THE FIRST CHARACTER OF A NEW; LINE.;
INS4    :ŠGETLN»READ A LINE OF TEXT¾
R5,INPUT¾
R6,$8D»INIT R6 WITH RETURN¼	@R5³R6»SERT  :ËSW16¾
R4,HIMEM»INIT HIMEM POINTER¼R2»TRANSFER R2 TO R5½R5;; SEE IF AT END-OF-FILE;³R3’INS1; ; IF SO, INCREMENT EOF POINTER.;µR5;;"; NOW, MOVE ALL TEXT PAST CURRENT; LINE UP TO HIGH MEMORY;INS1    ¼R5³R3RESTORE THE "END-OF-FILE" POINTER;¼R6½R2;DEL3    ¨ 	ÊCOMMND;;;; ***********************; *                     *; * INSERT: PUTS USER IN*; * THE INSERT MODE.    *; *                     *; ***********************;;
INSEDEL1    ¼	@R5³R4»TEST FOR RETURNŽDEL2¼R5³R2»END OF MEMORY?’DEL1“DEL3»IF SO, QUIT;
DEL2    :¼R3!½R6»TRANSFER CURRENT LINE TO R6;; ; NOW MOVE ALL OF THE TEXT DOWN; IN MEMORY;DEL4    ¼	@R5½	@R6¼R5³R2’DEL4;$;               *; * DELETE: DELETES THE*; * CURRENT LINE       *; *                    *; **********************;;DELETE  ËSW16¾
R4,$8D»LOAD RETURN FOR CMP¼R3»TRANSFER R3 TO R5½R5;;"; NOW FIND THE END OF THE CURRENT; LINE.;- A SWEET- *; * 16 SUBROUTINE     *; * WHICH PRINTS THE  *; * L.O. BYTE OF THE  *; * ACC ONTO THE CRT. *; *                   *; *********************;;;PRTCHR  ¨ ÍR0Ë$FDEDËSW16§ ;;;; **********************; *      (R3); TO THE FIRST LINE;¾
R3,STRTXT;&; NOW, GET EACH CHARACTER IN THE FILE(; AND PRINT IT UNTIL THE EOF IS REACHED;LIST1   ¼	@R3	ŠPRTCHR¼R3³R2’LIST1¨ 	ÊCOMMND;;; *********************; *                   *; * PRTCHR 
CMND2   :ËPERR»PRINT "ERR"	ÊCOMMND;;;; *********************; *                   *; * LIST- LISTS THE   *; * ENTIRE FILE.      *; *                   *; *********************;;LIST    ËSW16;#; MOVE "CURRENT LINE POINTER" ÍINPUT;; NOW PARSE THAT CHARACTER;"Ä#"I"»IF "I" GO INTO INSERT MODE	‡INSERTÄ#"L"»IF "L" LIST FILE‡LISTÄ#"D"»IF "D" DELETE LINE	‡DELETEÄ#"U"»MOVE UP ONE LINE†CMND1ÊUP;CMND1   Ä#$8D»NEXT LINE HERE†CMND2ÊDOWN;;DTXT¾
R3,STRTXT»CURRENT LOCATION¾
RC,$340»INIT SW16 STACK¨ ;ËHOME;
COMMND  :;; GET USER COMMAND & PARSE;;; INITIALIZE PROMPT FIRST;Í#":"Ð$33;; NOW READ A LINE OF TEXT;ËRDLN;$; GET FIRST CHARACTER TYPED ON LINE;0HIMEM   Ù $6800;;; VARIABLES;INPUT   Ù $200»INPUT STRINGR0      Ü $0»SWEET-16 REG ZERO;;SW16    Ù $F689HOME    Ù $FC58RDLN    Ù $FD67PERR    Ù $FF2D;;
EDIT    :ËSW16;; INITIALIZE POINTERS HERE;¾
R1,STRTXT¾
R2,ENARE SADISTIC ENOUGH TO"; WANT TO USE THIS TYPE OF EDITOR&; INSTEAD OF ONE OF THE NICER EDITORS$; ON THE MARKET, SUCH AS APPLE PIE,"; I WOULD SUGGEST THAT YOU EXPAND; ON IT GREATLY;;;;; COLDSTART CONSTANTS;STRTXT  Ù $6000ENDTXT  Ù $600PLE II COMPUTER;              W/INTEGER BASIC
; 9/20/79;;!; NOTE: THIS TEXT EDITOR IS VERY!; CRUDE.  IT IS PRESENTED SOLELY ; AS AN EXAMPLE OF THE SWEET-16; PSEUDO PROCESSOR."; THIS ENTIRE TEXT EDITOR FITS IN; LESS THAN 256 BYTES! ; IF YOU  >ã ; *************************; *                       *; * A SIMPLE, LINE ORIENT-*; * ED EDITOR USING SWEET *; * SIXTEEN.              *; *                       *; *************************;;; AUTHOR:RANDY HYDE!; INSTALLATION:AP            
	 






                                                                                                                                                                                                       ************;;
COPY    :ËGETCÄ#EOF»TEST FOR END-OF-FILE	‡COPYXTËPUTC»OUTPUT CHARACTERÊCOPYCOPYXT  ¥ »QUIT;;;; ************************; *                      *; * CHRCNT - CHARACTER   *; * COUNT. READS ALL THE *; * CHA	ÊPRTMSG;EOFLAG  ä 00;;;;;;; ************************; *                      *; * COPY- COPY CHARACTERS*; * FROM STANDARD INPUT  *; * AND OUTPUT TO STAND- *; * ARD OUTPUT.          *; *                      *; ************SE PRINT!; ERROR AND PERFORM A WARMSTART.;;
GERR    :/ÍEOFLAG»TEST TO SEE IF EOF IS ALREADY REACHED”GERR1;Í#TRUEÐEOFLAG»SET UP EOF FLAGÍ#EOF»RETURN W/EOF CHARACTER.¥ ;;;
GERR1   :
Í#WARMST	ÐDOSERR
Í/WARMSTÐDOSERR+$1ERRÐDOSERR+$1;Í80%ÐRUNMOD»INFORM DOS A PGM IS RUNNINGÍ#$FFÐLANG»FAKE APPLESOFT$ÐONERR»SIMULATE AN ONERR GOTO GERR;0ËKEYIN»GET DESIRED CHARACTER FROM INPUT DEVICE;¥ ;"; DISK ERROR OCCURED, IF EOF THEN#; SET EOF TO TRUE. OTHERWI  * VARIABLE EOF IS  *;    * SET TO TRUE.     *;    * IF EOF WAS AL-   *;    * READY TRUE THEN  *;    * A WARM START WILL*;    * OCCUR.           *;    *                  *;    ********************;;
GETC    :;Í#GERR	ÐDOSERRÍ/G********;    *                  *;    * GETC - GETS A    *;    * CHARACTER FROM   *;    * THE CURRENT INPUT*;    * DEVICE.          *;    *   IF INPUT IS    *;    * FROM THE DISK AND*;    * THE END-OF-FILE  *;    * IS ENCOUNTERED,  *;   :¡ »SAVE CHARACTER IN ACC.; Í#WARMST»SET UP ERROR RECOVERYÐDOSERR»POINTER
Í/WARMSTÐDOSERR+$1;Í#$80%ÐRUNMOD»INFORM DOS A PGM IS RUNNING; ¢ »GET CHARACTER TO BE PRINTED.Â#$80ËCOUT»PRINT IT!¥ ;;;;;;    ************ TO THE *;    * CURRENT OUTPUT     *;    * DEVICE.            *;    *                    *;    * IN THE EVENT OF A  *;    * DISK ERROR A COLD- *;    * START IS PERFORMED.*;    *                    *;    **********************;;
PUTC   RUE    Ù $1FALSE   Ù $0BLANK   Ù " "TAB     Ù $89»TAB CHARACTER ZERO    Ù "0"EOS     Ù $00»END-OF-STRING;;;    **********************;    *                    *;    * PUTC - OUTPUTS THE *;    * CHARACTER IN THE   *;    * ACCUMULATOR  Ü $D8»ON ERROR FLAGRUNMOD  Ü $D9»RUN MODE FLAG!ERROR   Ü $DE»DOS ERROR LOCATION(PRTMSG  Ù $A6E1»PRINT DOS ERROR MESSAGE;; CONSTANTS;CTLD    Ù $84»CONTROL-DCR      Ù $8D»RETURN NWLINE  Ù $8D»NEWLINE CHARACTEREOF     Ù $00»EOF CHARACTERTARACTER OUT LOCATION-KEYIN   Ù $FD0C»APPLE CHARACTER IN LOCATION GETLNZ  Ù $FD67;; ADDRESS LOCATIONS;%DOSERR  Ù $9D5A»VECTOR FOR DOS ERROR!DOSCLD  Ù $9D5C»COLDSTART VECTOR!DOSWRM  Ù $9D5E»WARMSTART VECTORLANG    Ù $AAB6»LANAGUAGE FLAGONERR  TESTED.;;ã ;;; ZERO PAGE WORKSPACE;ZPAG    Ü $00;; APPLE DOS 3.2 WORKING AREAS;; JUMP VECTORS;%WARMST  Ù $3D0»WARMSTART JUMP VECTOR%COLDST  Ù $3D3»COLDSTART JUMP VECTOR INTDOS  Ù $3EA»RE-INITS DOS 3.2-COUT    Ù $FDED»APPLE CH***************************;; SOFTWARE TOOLS- BASED ON; PROGRAMS, UTILITIES ETC.; FOUND IN THE BOOK  ; "SOFTWARE TOOLS" BY KERNIGHAN; & PLAUGER.; TRANSLATION BY RANDY HYDE; AUGUST 1979;#; WARNING: THESE ROUTINES HAVE NOT; YET BEEN FULLYSTATE-OF-THE ART.; ;  FOR PEOPLE WHO LIKE THE UNIX!;  OPERATING SYSTEM, AND ALL THE";  NEAT UTILITIES THAT GO WITH IT;  I SUGGEST YOU CHECK OUT THE;  ANIX OPERATING SYSTEM.;;                 RANDY HYDE;                 -- 1981;;#;****** 1>;; BEFORE WE BEGIN- AN APOLOGY.;";  THESE ROUTINES WERE WRITTEN IN";  LATE 1979.  THEY ARE NEITHER A!;  GOOD EXAMPLE OF 6502 ASSEMBLY!;  LANGUAGE PROGRAMMING, NOR ARE;  THEY PARTICULARLY USEFUL.;";  MOST OF ALL THESE ROUTINES ARE;  NOT             
	 
	 
	 
	                                                                                                                       AL THANKS GOES TO LOYAL; LISA SUPPORTERS WHO'VE BEEN#; AROUND SINCE THE EARLY 1.2, 1.3,!; 1.5, AND 2.2 VERSIONS.  THANKS; FOR MAKING LISA THE FAVORED; ASSEMBLER ON THE APPLE II.; YOUR SUPPORT HAS MADE THE; "NEW AND IMPROVED" VERSIONS; OF LISAORE THAN; HAPPY TO HELP YOU WITH SUCH!; A PRODUCT, CALL KEN AT ON-LINE"; AND DISCUSS YOUR IDEA WITH HIM.; IF HE CAN'T HELP YOU HE CAN; TELL YOU HOW TO GET AHOLD OF; ME.;;   I WOULD PERSONALLY LIKE TO!; THANK YOU FOR PURCHASING LISA.; SPECI ; PROJECT.  TO GIVE YOU AN IDEA; OF WHAT TYPE OF MARKET YOU#; CAN REACH, LISA AS OF 6/1/81 HAS; SOLD SOMEWHERE BETWEEN 5,000 ; AND 10,000 COPIES.  SALES ARE; INCREASING AND ARE CURRENTLY!; PEGGED AT ABOUT 300 PER MONTH.;; AS I SAID, I'LL BE MUCE; USERS TO WRITE UTILITIES AND; OTHER SUPPORT PROGRAMS FOR; LISA.  I'M SURE KEN WILLIAMS; WOULD BE MORE THAN HAPPY TO"; HELP YOU MARKET SUCH A PROGRAM,; AND I WILL CERTAINLY PROVIDE; SUPPORT AND IDEAS FOR USERS; WISHING TO ATTEMPT SUCH A  THE INPUT ; LINE EDITOR AND THE ASSEMBLER ; PROPER ARE SO KLUDGED UP FROM!; ALL THE ADDITIONS MADE TO LISA!; OVER THE PAST 2 1/2 YEARS THAT"; EVEN I HAVE TROUBLE UNDERSTAND-; ING THEM.;;   AS MENTIONED, I HOPE THESE; SOURCE LISTINGS HELP INDRED REWRITTING ; LISA LIKE I SHOULD HAVE.  THE!; PORTIONS YOU'RE GETTING AREN'T; AS BAD AS THE REST OF LISA!; (WHICH IS THE MAIN REASON I AM; NEVER GOING TO RELEASE THE; SOURCES OF THE ENTIRE V2.5; ASSEMBLER), AT LEAST THEY'RE; UNDERSTANDABLE.; MICROPRODUCTS ASSEMBLER."; CALLING THAT ASSEMBLER CRUDE IS; COMPLIMENTING IT.  OF COURSE"; HAVING POOR TOOLS WAS ONLY PART!; OF THE PROBLEM: I'VE LEARNED A#; LOT ABOUT 6502 ASSEMBLY LANGUAGE!; SINCE I ORIGINALLY WROTE LISA,%; AND I'VE NEVER BOTHER TWO OF THEM MAY CAUSE SOME; PROBLEMS WITH THE INPUT LINE"; EDITOR AND THE ASSEMBLER PROPER;;;;  FINALLY, I WOULD LIKE TO; APOLOGIZE FOR SOME OF THE ; KLUDGES FOUND IN LISA.!; LISA WAS FIRST WRITTEN IN LATE; 1978 / EARLY 1979 USING THE; FOUR CHARACTER ASSEMBLER AND; AS SUCH EQUATES HAD TO BE!; DUPLICATED THROUGHOUT THE TEXT; FILES SINCE NO "ICL" PSEUDO; OPCODE WAS AVAILABLE.!; YOU'RE ONLY GETTING TWO OF THE!; FIVE SOURCE FILES THAT MAKE UP!; LISA.  CHANGING EQUATES IN ONE ; O ALL THE AREA BETWEEN P2.L AND;   $EBE0 ($6BE0).;";   ALL THE AREA AFTER THE END OF;   THE P6.TXT LISTING THROUGH ;   $DFFF IN THE $C080 RAM BANK;; WARNING!!! DON'T CHANGE ANY ; EQUATES.  LISA WAS ORIGINALLY!; WRITTEN WITH THE MICROPRODUCTS";          IN TEXT FILE FORMAT OF;          THE LAST PORTION OF;          LISA CONTAINING THE#;          CLOCK DRIVERS AND OTHER;          USEFUL INFORMATION.;;;  PATCH AREAS AVAILABLE:;";   ALL THE AREA BETWEEN P1.L AND	;   P2.L;";    P1.L- THE COMMAND PROCESSOR;        PORTION OF LISA 2.5A.;";  P2.L- THE INPUT/OUTPUT PORTION;        OF LISA 2.5A. (ALMOST";        IDENTICAL TO THE LZR IOS;        PACKAGE PROVIDED WITH;        LISA 1.5F.); ;  P6.TXT- AN ASSEMBLED LISTINGRAM.  THIS SOURCE LISTING!; DOES NOT GIVE YOU THE RIGHT TO; MODIFY A PORTION OF LISA AND#; SELL IT AS YOUR OWN WORK.  THAT, ; OF COURSE, IS THE LOWEST FORM; OF SOFTWARE PIRACY.;; ENOUGH OF THE BAD STUFF.; ;   HERE'S WHAT I'M GIVING YOU:;; FAITH.  IT IS NOT A"; LICENSE TO STEAL.  HOPEFULLY BY; PROVIDINGG THIS SOURCE I CAN; ENCOURAGE THE USER COMMUNITY; TO CREATE PROGRAMS THAT WORK; WITH LISA (SUCH AS BETTER; EDITORS, UTILITIES, ETC).;#;  REMEMBER, LISA IS A COPYRIGHTED ; PROG &Cã "ï "LISA SOURCE LISTING -- PART 1";;; LISA SOURCE LISTING: PART 1.;"; THIS SOURCE LISTING IS INCLUDED!; AS PART OF THE LISA PACKAGE TO; HELP YOU PATCH LISA FOR YOUR; PARTICULAR SYSTEM.;#;  THIS SOURCE LISTING IS PROVIDED; IN GOOD            
	 
	 
	 
	 
	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ,$8Då 0;;Þ 'FP'á ÿÿÿ                                                                                                                                                                                                                                 MSG2    ä 8D84ß "BLOAD ASM.CODE.2,A$D000"å $8D,0;;; LOAD LISA 48K ;NOLANG  Í#1 Ð$AAB1;Î#0PRTM2LP ÍMSG3,X	‡M3DONEË$FDEDž 
†PRTM2LP;M3DONE  Ê$6000;#MSG3    å $8D,$84,"MAXFILES 1",$8D"å $84,"BLOAD ASM.CODE,A$6000" 64K LISA ;Ï#$0Í$C089Í$C089LBL     ÍMSG,Y‡LBL1Ë$FDEDŸ ÊLBLLBL1    Í$C083 Í$C083Í$C083Ï#$0LBL2    ÍMSG2,Y‡LBL3Ë$FDEDŸ ÊLBL2;LBL3    Í$C080	Ê$E000ÊMSG     ä 8D84ß "BLOAD ASM.CODE.1,A$D000"ä 8D00#0;PRTMSG0 ÍMSG0,X‡MSG0DONEË$FDEDž 
†PRTMSG0;MSG0    å $8Då "LOADING LISA",0; ; SEE IF THEY HAVE A RAM CARD ; 
MSG0DONE:Í$C083Í$C083Í#0Ð$E000Í$E000	†NOLANGÍ#$FFÐ$E000Í$E000Ä#$FF	†NOLANG;; LOAD ï "LISA IPL --  MXFLS";; MXFLS SOURCE ; COMMON CODE FOR BOTH 64K LISA; AND 48K LISA;Í#$4C»JMP INSTRUCTIONÐ$A57AÐ$A59EÍ#$84»DOS COLDSTART ADDRESSÐ$A57BÐ$A59FÍ#$9DÐ$A57CÐ$A5A0Í#$EA»NOPÐ$A6DFÐ$A6E0Ë$FC58Î            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ã�ÄÄÆÅ Ã¹ ÂÂ     ²°¹·           ÃÍÐ £¢»¢�ÄÅ°° Æ° °¶     ²°¹¸           ÂÅÑ ÔÉÍ°�ÄÅ°² ²° ¹¸ Å¸  ²°¹¹           ÊÓÒ ÐÕÔÃ�Œ�ÌÉÓÁ ²®µ                  ÌÉÓÔ Ðµ®Ì                                                                                                    Æ ¹° Æµ     ²°¹°           ÂÌÔ ÐÕÔÔÌ²�ÄÄÆ± ²° ¸³ Å¸  ²°¹±           ÊÓÒ ÐÒÎÔ�ÄÄÆ´ ²° ²° ²°  ²°¹²           ÁÓÃ §   §�ÄÄÆ· °°        ²°¹³           ÈÅØ °°�ÄÄÆ¸ ²° ´¹ ÄÅ  ²°¹´           ÊÓÒ ÓÅÔÃÌË�ÄÄÆÂ           ²°¹µ  »�ÄÄÆÂ ²° °Ã ÆÄ  ²°¹¶  ÔÉÍÅÌÐ   ÊÓÒ ¤ÆÄ°ÄÅ ²° ²° ²° �ÄÄÅ± ²° ²° �ÄÄÅ³ °°        ²°¸´           ÈÅØ °°�ÄÄÅ´ Á² °°     ²°¸µ           ÌÄØ £¤°�ÄÄÅ¶ ÂÄ ¸° ¹µ  ²°¸¶  ÐÕÔÔÌ²   ÌÄÁ ÔÔÌ¬Ø�ÄÄÅ¹ ²° ¹¸ Å¸  ²°¸·           ÊÓÒ ÐÕÔÃ�ÄÄÅÃ Å¸        ²°¸¸           ÉÎØ �ÄÄÅÄ Å° ²°     ²°¸¹           ÃÐØ £¤²°�ÄÄÅ    ²°¸±           ÂÙÔ ¤Ã              »ÃÏÎÔÒÏÌ­Ì ¨ÔÏÐ­ÏÆ­ÆÏÒÍ©�ÄÄÃ¸ °Ä        ²°¸²           ÂÙÔ ¤Ä�ÄÄÃ¹ ´Ã ´¹ µ³  ²°¸³           ÁÓÃ §ÌÉÓÁ ²®µ                  §�ÄÄÃÃ ´± ²° ³² �ÄÄÃÆ ²Å ³µ ²° �ÄÄÄ² ²° ²° ²° �ÄÄÄµ ²° ²° ²° �ÄÄÄ¸ ²° ²° ²° �ÄÄÄÂ ²° ²° ²° �ÄÄÄÄÂÄ ¶°        ²°·´           ÒÔÓ �ÄÄÂÅ           ²°·µ  »�ÄÄÂÅ ¸Á        ²°·¶  ÐÕÔÔÌ±   ÔØÁ �ÄÄÂÆ ´¸        ²°··           ÐÈÁ �ÄÄÃ° Á¹ °°     ²°·¸           ÌÄÁ £°�ÄÄÃ² ¸µ ÁÂ     ²°·¹           ÓÔÁ ÌÉÎÃÎÔ�ÄÄÃ´ ²° ¸³ Å¸  ²°¸°           ÊÓÒ ÐÒÎÔ�ÄÄÃ· °Ã    °¶¶  »�ÄÄÂ¸           ²°¶·  » ÃÁÌÌÅÄ ×ÈÅÎÅÖÅÒ ÔÏÐ ÏÆ ÆÏÒÍ�ÄÄÂ¸           ²°¶¸  » ÉÓ ÒÅÑÕÉÒÅÄ®�ÄÄÂ¸           ²°¶¹  »�ÄÄÂ¸           ²°·°  ªªªªªª�ÄÄÂ¸           ²°·±  ÐÕÔÔÔÌº�ÄÄÂ¸ ÁÄ ²° Å°  ²°·²           ÌÄÁ ÐÒÔÔÔÌ�ÄÄÂÂ Ä° °±     ²°·³           ÂÔÒ ÐÕÔÔÌ±�     ²°µ¹  »  ÁÓÔÅÒÉÓËÓ®  ÉÆ ÙÏÕ ÐÁÔÃÈ ÔÈÉÓ�ÄÄÂ¸           ²°¶°  »  ÓÅÃÔÉÏÎ ÏÆ ÌÉÓÁ ÍÁËÅ ÓÕÒÅ ÙÏÕ�ÄÄÂ¸           ²°¶±  »  ÐÒÅÓÅÒÖÅ ÔÈÅÓÅ ÁÄÄÒÅÓÓÅÓ®�ÄÄÂ¸           ²°¶²  »�ÄÄÂ¸           ²°¶³  »�ÄÄÂ¸           ²°¶´  »�ÄÄÂ¸           ²°¶µ  »�ÄÄÂ¸           ²       ²°µ´  »  ÙÏÕ ÍÁÙ ×ÒÉÔÅ ÙÏÕÒ Ï×Î ÃÌÏÃË�ÄÄÂ¸           ²°µµ  »  ÄÒÉÖÅÒ ÆÏÒ ÙÏÕÒ ÐÁÒÔÉÃÕÌÁÒ�ÄÄÂ¸           ²°µ¶  »  ÃÌÏÃË®  ÅÎÔÒÙ ÐÏÉÎÔÓ ÃÁÌÌÅÄ�ÄÄÂ¸           ²°µ·  »  ÆÒÏÍ ÏÕÔÓÉÄÅ ÔÈÉÓ ÓÅÃÔÉÏÎ�ÄÄÂ¸           ²°µ¸  »  ÏÆ ÃÏÄÅ ÁÒÅ ÍÁÒËÅÄ ×ÉÔÈ�ÄÄÂ¸      �ÄÄÂ¸           ²°´·           ÌÓÔ �ÄÄÂ¸           ²°´¸  »�ÄÄÂ¸           ²°´¹  »�ÄÄÂ¸           ²°µ°  » ÔÈÅ ÆÏÌÌÏ×ÉÎÇ ÓÅÃÔÉÏÎ ÏÆ�ÄÄÂ¸           ²°µ±  » ÃÏÄÅ ÈÁÎÄÌÅÓ ÏÕÔÐÕÔ ÏÆ ÔÈÅ�ÄÄÂ¸           ²°µ²  » ÔÉÔÌÅ ÔÏ ÔÈÅ ÐÒÉÎÔÅÒ®�ÄÄÂ¸           ²°µ³  »�ÄÄÂ¸                
	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  